我是Andengine的新手并尝试制作一款游戏类似于River City Ransom的游戏 - http://www.youtube.com/watch?v=goQlPC5wOic
问题: 在创建场景时,我加载了玩家精灵,背景,HUD,并且可以一次加载它,因为在其他所有准备就绪之前加载其中任何一个是没有意义的。
但是当我尝试异步为新的Sprite创建一个新的TiledTextureRegion(从边缘出现一个新的敌人)时,从资产创建TextureRegion时仍然存在延迟。
示例:
new LoadNewEnemyOnSceneTask(enemyTexture, enemyTextureRegion, mScene, this).execute();
public class LoadNewEnemyOnSceneTask extends AsyncTask<String, Void, PixelPerfectAnimatedSprite> {
private PixelPerfectTiledTextureRegion enemyTextureRegion;
private BitmapTextureAtlas enemyTexture;
private Scene scene;
BaseGameActivity act;
public LoadNewEnemyOnSceneTask(BitmapTextureAtlas enemyTexture, PixelPerfectTiledTextureRegion enemyTextureRegion, Scene scene, BaseGameActivity act)
{
this.enemyTexture = enemyTexture;
this.enemyTextureRegion = enemyTextureRegion;
this.scene = scene;
this.act = act;
}
@Override
protected PixelPerfectAnimatedSprite doInBackground(String... params) {
enemyTextureRegion = PixelPerfectTextureRegionFactory.createTiledFromAsset(enemyTexture, act.getAssets(), "akira.png", 0, 200, 5, 3, 0);
PixelPerfectAnimatedSprite enemy = new PixelPerfectAnimatedSprite(480, 200, enemyTextureRegion, act.getVertexBufferObjectManager());
return enemy;
}
@Override
protected void onPostExecute(PixelPerfectAnimatedSprite result)
{
scene.attachChild(result);
}
}
这是内部的Andengine错误/功能吗?有没有办法动态加载场景中的新纹理?我能找到的唯一信息与赛前资源加载有关。
答案 0 :(得分:1)
你可以在这里进行优化。只在onLoadResources中加载TiledTextureRegion一次,然后在创建Sprite时,您可以根据需要复制(使用copy()或deepCopy())。这样,将Region实际加载到内存中的昂贵过程只进行一次。
希望这有帮助。