gpt4 book ai didi

java - LibGDX 中纹理的多个实例?

转载 作者:行者123 更新时间:2023-12-01 23:45:54 28 4
gpt4 key购买 nike

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

最佳答案

我建议为每个怪物都有一个 Sprite 实例。所有 Sprite 都对单个纹理具有相同的引用,因此更容易拥有大量 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");
}

正如你所看到的,它为每个怪物提供了一个具有相同纹理的新 Sprite 实例。所有 Sprite 都引用相同的纹理以节省内存。希望这会有所帮助。

关于java - LibGDX 中纹理的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062976/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com