什么时候加载资产?

时间:2012-12-03 14:03:45

标签: android libgdx

最好的方法是什么?

1)制定方法:

Assets.loadAll()

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

OR

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

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

1 个答案:

答案 0 :(得分: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来调用它(这是静态的很好)

希望这有帮助!