あなたが言ったように、Spriteクラス自体はdisposeメソッドを持っていないので、Spriteのテクスチャをどのように処分するのです。
しかし、より良い方法は全体としてAssetManager
classを使用してテクスチャを読み込んで処分することです。そうすることで、すべてのテクスチャを1か所で管理することができます(必要に応じて、プログラムが終了した時点で一度にすべて破棄することができます)。ここで
は、私が現在働いているゲームからの例です:
public class Controller extends Game {
@Override
public void create() {
// Some loading stuff ...
// Initialize the asset manager
// TODO: Make a snazzy loading bar
assetManager = new AssetManager();
assetManager.load(ATLAS_NAME, TextureAtlas.class);
assetManager.finishLoading();
// Other loading stuff...
}
// Other methods snipped for space reasons...
@Override
public void dispose() {
// I dispose of things not managed by the asset manager...
// Dispose of any other resources
assetManager.dispose();
}
/**
* Convenience method to safely load textures. If the texture isn't found, a blank one is created and the error is logged.
* @param imageName The name of the image that is being looked up.
* @return
*/
public TextureRegionDrawable getManagedTexture(String imageName) {
try {
return new TextureRegionDrawable(assetManager.get(ATLAS_NAME, TextureAtlas.class).findRegion(imageName));
} catch(Exception e) {
Gdx.app.error(getClass().getSimpleName(), "Couldn't get managed texture.", e);
return getEmptyTexture();
}
}
public TextureRegionDrawable getEmptyTexture() {
return new TextureRegionDrawable(new TextureRegion(new Texture(new Pixmap(1,1, Pixmap.Format.RGBA8888))));
}
}
は確かに私は常に(それが空白だとしても)テクスチャを取り戻すように、アセット・マネージャーをラップファンキーな方法を作成しましたが、資産管理者の通常の使用は次のように簡単です:
Texture tex = assetManager.get("my/texture/name.png", Texture.class);
AtlasesとSkinsのような他のクラスでも機能します。
はい正しい方法です。この[トピック](http://stackoverflow.com/questions/29574504/libgdx-dispose-sprite-or-texture-in-sprite-is-mandatory)には理由が説明されています。 – Squiddie