我想用libgdx做一个自上而下的2D射击游戏。当我们离开屏幕时,会有很多子弹对象需要跟踪和处理。我以为我会使用像
这样的东西static ArrayList<Bullet> bullets;
要在 Bullet 类中跟踪我的项目符号,请检查此数组列表中是否有不在屏幕上的项目符号,如果是,请将其丢弃,然后从ArrayList中删除该项目符号。我想知道这是否是最好的方法。这似乎应该很常见,所以我想确保这是最好的方法。
答案 0 :(得分:3)
使用object poo l是一种更好的方法。
对象池的概念很简单,在这种情况下非常适合您的需求。池处理创建和存储Bullet
对象。您需要做的就是在需要子弹(用户射击)时调用池的obtain
方法,并在游戏中不再需要时调用该子弹池的循环方法(离开屏幕)
这是从AndEngine的源代码中获取的池的code example。您可以使用它来了解它的工作原理并创建自己的池类(或使用此类)。