0

我在编写游戏时对速度和效率有疑问。我想知道同时在屏幕上显示大量敌人的最佳方法是什么。我是否使用单个精灵,移动它并为每个敌人绘制它?或者我是否对每个敌人都有一个 Sprite 实例(其中一次可能有 50 个在屏幕上)。我想知道拥有大量 Sprite(以及纹理)实例对速度的影响。以上哪一项最有利于提高效率和整体良好实践?

4

1 回答 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 回答