0

什么是最好的方法?

1)制作方法:

Assets.loadAll()

加载游戏中使用的所有纹理,并在splashScreen中调用此方法(因此在所有活动生命中只有一次)

或者

2)为每个屏幕制作一个方法(即Assets.loadMainMenu,Assets.loadGameScreen等)并在任何屏幕的show()中调用它?(并在 hide() 中调用 Assets.disposeMainMenuAssets、Assets.disposeGameScreenAssets 等。)

注意:2)比第一个慢,但在第一个如果我阻止电话(使用经典的物理按钮)并且在返回应用程序后,纹理消失(如果我按下“主页”则不会发生)按钮......但是如果我锁定手机是的......奇怪的是,在libGdx 9.6中,如果我锁定手机,纹理不会消失,但是使用libGdx 9.7这个附加......)

4

1 回答 1

1

如果是 5MB 的资产,我说只需将它们加载到启动屏幕上即可。这样,屏幕切换之间几乎没有“加载”时间。方法1是最好的。

创建一个名为Assets. 在这有一个名为“load”的静态方法,就像这样

公共类资产{

private static Texture tex;
public static TextureRegion tree,cloud1,cloud2,cloud3,rock,platform,playerStanding,
                            rocket, rocketShadow, moon, star;
public static SpriteAnimation playerMoving;

public static void load(){
    tex = new Texture(Gdx.files.internal("data/Graphics.png"));
    tex.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    tree = new TextureRegion(tex, 0,0,246,226);
    cloud1 = new TextureRegion(tex, 246,0,225,92);
    cloud2 = new TextureRegion(tex, 358,197,88,84);
    cloud3 = new TextureRegion(tex, 0,226,105,64);
    rock = new TextureRegion(tex, 246,197,112,90);
    platform = new TextureRegion(tex, 246,92,193,105);

    tex = new Texture(Gdx.files.internal("data/Graphics2.png"));
    tex.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    playerMoving = new SpriteAnimation(new TextureRegion(tex,0,0,458,555), 4, 5, 0.01f);
    playerStanding = new TextureRegion(tex,0,0,112,110);

    tex = new Texture(Gdx.files.internal("data/Graphics3.png"));
    tex.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    rocket = new TextureRegion(tex,0,218,119,201);
    rocketShadow = new TextureRegion(tex,0,0,138,218);

    tex = new Texture(Gdx.files.internal("data/Graphics4.png"));
    tex.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    moon = new TextureRegion(tex,0,0,410,382);
    star = new TextureRegion(tex,0,382,123,123);
}

public static void dispose(){
    tex.dispose();
}
}

(这只是我游戏中的一个例子。名字并不重要,重要的是方法)

在您的初始屏幕上,您只需调用即可Assets.load();加载您的所有资产!

然后你想使用一个资产,你可以通过它调用它Assets.whatever(静态的很好)

希望这可以帮助!

于 2012-12-03T18:29:41.443 回答