第二次加载我的 andengine 活动时,我的精灵(它们本身是盒子,但颜色不同)都显示为黑盒子。这很奇怪,因为通常这个问题是由于纹理图集不够大,但我尝试将图集的大小加倍,但没有奏效。所以这里是相关的代码,任何帮助将不胜感激!
所以把它放在那里,第一次加载我的游戏时,一切都很好,很完美,但第二次,精灵出现黑色。
我见过其他问题,其中精灵显示为黑框,但对我来说,它们第一次加载很好,其他问题不会发生这种情况,其他问题给出的答案对我不起作用(他们是, atlas 需要是 2 的幂,atlas 不够大)
public void loadGameResources(){
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
gameTextureAtlas = new BuildableBitmapTextureAtlas(activity.getTextureManager(), 512, 512, TextureOptions.BILINEAR);
blackTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "blacktile.png");
greyTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "greytile.png");
redTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "redtile.png");
greenTile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(gameTextureAtlas, activity, "greentile.png");
Log.d(gameTextureAtlas+"","didn'tignore");
loadFont();
try{
Log.d("LOPOLL","arrived");
gameTextureAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 1, 0));
Log.d("boom","arrived");
gameTextureAtlas.load();
Log.d("gotHere","arrived");
}catch(Exception e){
Log.d("WrongPlace","arrived");
}
}
(资源卸载方式)
public void unloadGameResources(){
if(gameTextureAtlas !=null){
gameTextureAtlas.unload();
}
gameTextureAtlas = null;
// blackTile = null;
// greyTile = null;
// redTile = null;
// greenTile = null;
}
我评论给 tiletextures 一个空值的部分的原因是,这样做由于某种原因会产生一个空异常错误,即使我认为在重新加载活动时会重新分配纹理,因为重新加载活动调用 loadgameresources() 方法