LibGDX статический AssetManager

У меня возникли некоторые проблемы с выяснением правильного использования класса AssetManager libGDX. Насколько я понимаю, вы никогда не должны создавать статический экземпляр AssetManager. Альтернативой, которую предложили люди, была передача ссылки AssetManager каждому использующему ее классу. Мне интересно, является ли то, что я предложил Ниже, Еще одной безопасной альтернативой.

public class GdxGame extends Game {

    private AssetManager assets;

    ....dispose, create AssetManager etc


    public static AssetManager getAssets() {
        return ((GdxGame) Gdx.app.getApplicationListener()).assets;
    }
}

Я действительно не хочу передавать AssetManager или Assets class вокруг каждого отдельного класса в игре, поэтому я пытаюсь выяснить решение, которое позволяет некоторого рода статической ссылки. Это безопасно?

1 ответ

  1. Я думаю, что вы слишком беспокоитесь: -) статический экземпляр, который вы предложили изначально, будет идеально адекватным и функциональным для ваших целей:

    private static AssetManager assets;
    ....dispose, create AssetManager etc
    
    public static AssetManager getAssets() {
        return assets;
    }
    

    Единственная ловушка для молодых игроков, чтобы избежать, когда вы приостанавливаете Android-приложение: при возобновлении просто перезагрузите AssetManager и его активы, прежде чем продолжить. Не беспокойтесь о семантике — если она работает для вас, то все в порядке. Счастливый день.)-: