0

最善の方法は何ですか?

1) メソッドを作る:

Assets.loadAll()

ゲームで使用されるすべてのテクスチャをロードし、splashScreen でこのメソッドを呼び出します (したがって、すべてのアクティビティ ライフで 1 回だけです)。

また

2) 画面ごとに 1 つのメソッド (つまり、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 に答える