gpt4 book ai didi

android - 如何在 Libgdx 中处理 Sprite ?

转载 作者:行者123 更新时间:2023-11-30 00:48:59 26 4
gpt4 key购买 nike

经过查找,发现Sprite是Libgdx中TextureRegion的子类。那么如何处理 Sprite 对象呢?

public void create() {
batch = new SpriteBatch();
sprite = new Sprite(new Texture("pizza.jpg"));


}

@Override
public void render() {
Gdx.gl.glClearColor(0,0,0,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();

batch.end();

}

@Override
public void dispose() {
batch.dispose();
sprite.getTexture().dispose();

这是正确的方法吗?提前致谢!

最佳答案

正如您所说,Sprite 类本身没有 dispose 方法,所以这就是您处理 Sprite 纹理的方式。

但是,整体上更好的方法是使用 AssetManager class加载纹理并处理它。这样做可以让您在一个地方管理所有纹理(因此如果需要,可以在程序退出时一次性处理所有纹理)。

这是我目前正在开发的一款游戏的示例:

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))));
}
}

不可否认,我创建了一个时髦的方法来包装 Assets 管理器,这样我总能得到一个纹理(即使它是空白的),但 Assets 管理器的正常使用就像这样简单:

Texture tex = assetManager.get("my/texture/name.png", Texture.class);

它也适用于其他类,如 map 集和皮肤。

关于android - 如何在 Libgdx 中处理 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41349350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com