我在编写游戏时对速度和效率有疑问。我想知道同时在屏幕上显示大量敌人的最佳方法是什么。我是否使用单个精灵,移动它并为每个敌人绘制它?或者我是否对每个敌人都有一个 Sprite 实例(其中一次可能有 50 个在屏幕上)。我想知道拥有大量 Sprite(以及纹理)实例对速度的影响。以上哪一项最有利于提高效率和整体良好实践?
问问题
1464 次
1 回答
3
Id 建议为每个怪物创建一个 Sprite 实例。所有精灵都对单个纹理具有相同的引用,因此无需移动单个纹理就可以更容易地拥有大量精灵。
这是我的代码示例;
public ArrayList<Monster> createMonsters(int count, int maxlevel,
int minlevel, MonsterTypes type) {
ArrayList<Monster> monsters = new ArrayList<Monster>();
// just one texture but multiple sprites
// save memory :)
Texture monster = getTextureByType(type);
for (int i = 0; i < count; i++) {
// create random level inside the area
int level = (int) ((Math.random() * maxlevel) + minlevel);
// create a default monster
Monster mon = new Monster(level, new Sprite(monster), screen,
new RandomAI());
monsters.add(mon);
}
return monsters;
}
private Texture getTextureByType(MonsterTypes typ) {
return this.screen.game.manager.get("monster/" + typ.getFileName()
+ ".png");
}
如您所见,它为每个怪物提供了具有相同纹理的精灵的新实例。所有精灵都引用相同的纹理以节省内存。希望这可以帮助。
于 2013-06-12T13:26:55.527 回答