【发布时间】:2014-09-16 07:39:11
【问题描述】:
我最初是直接从资产文件夹加载 TextureAtlas,但是 游戏变得非常迟钝,因为我必须调用 TextureAtlas 的每个区域来获取要在动画中使用的帧(libgdx 声明使用 findregion 作为 TextureAtlas 是 SLOW=lag)。所以我决定使用assetloader来最小化延迟,但问题是 我找不到通过 AssetManager 加载 TextureAtlas (.pack) 的方法。我不断收到
com.badlogic.gdx.utils.GdxRunTimeException:资产未加载:enemytest.pack
我也一直在尝试使用其他加载器,但效果不佳..我找不到任何资源,所以我需要帮助 :( 提前谢谢你!
在我的资产文件夹中,我有“enemytest.png”和“enemytest.pack”文件。
这是一个游戏类(扩展游戏)
public class MyGdxGame extends Game {
private TextureAtlas enemy;
AssetManager manager;
FileHandleResolver resolver = new InternalFileHandleResolver();
@Override
public void create () {
manager = new AssetManager();
manager.setLoader(TextureAtlas.class, new TextureAtlasLoader(new InternalFileHandleResolver()));
load();
setScreen(new GameScreen());
}
@Override
public void render(){
if(manager.update()){
}
}
private void load(){
manager.load("enemytest.pack", TextureAtlas.class);
manager.finishLoading();
}
}
这是 GameScreen 类..
public class GameScreen implements Screen{
private GameStage stage;
public Texture bg;
public GameScreen() {
stage = new GameStage();
}
@Override
public void render(float delta) {
//Clear the screen
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//Update the stage
stage.act(delta);
stage.draw();
}
这是我想从 AssetManager 获取 TextureAtlas 图像的地方。
public class Enemy extends GameActor{
private Animation animation;
private float stateTime;
AssetManager manager = new AssetManager();
public Enemy(Body body) {
super(body);
TextureAtlas textureAtlas = manager.get("enemytest.pack", TextureAtlas.class);
TextureRegion[] animationFrames = new TextureRegion[getUserData().getTextureRegions().length];
【问题讨论】: