我在libgdx中使用AssetManager和Atlas文件来加载所有纹理。这工作得很好,但我想修改我必须使用不同纹理合并的代码。
例如,当完全缩小时,我不需要一个漂亮的高分辨率纹理。一个小的像素化点就足够了。放大时,我想使用正确的高分辨率纹理。
目前我有这个:
主要渲染()方法:
batch.draw(Assets.instance.ballsmall.ballsmall, this.x, this.y);
(你可以暂时忽略双ballsmall.ballsmall
。这只是我的资产对象结构的一个较小的语义问题。)
AssetManager部分:
public class Assets implements Disposable {
private AssetManager _assetManager;
public BallSmall ballsmall;
public static final Assets instance = new Assets();
private Assets() {}
public void init(AssetManager assetManager)
{
_assetManager = assetManager;
_assetManager.load("output/Game.atlas", TextureAtlas.class);
_assetManager.finishLoading();
TextureAtlas atlas = _assetManager.get("output/Game.atlas");
for (Texture t : atlas.getTextures())
{
t.setFilter(TextureFilter.Linear, TextureFilter.Linear);
}
ballsmall = new BallSmall(atlas);
}
@Override
public void dispose() {
_assetManager.dispose();
}
public class BallSmall {
public final AtlasRegion ballsmall;
public BallSmall(TextureAtlas atlas) {
ballsmall = atlas.findRegion("ballsmall");
}
}
}
我想让主render()
方法保持简单,调用Assets.instance
并可能将全局缩放级别作为参数传递。但是,AssetManager必须使用此缩放级别来确定要交换的纹理。非常感谢。