Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想使用 libgdx 制作一个自上而下的 2d 射击游戏。当它们离开屏幕时,我想要跟踪和处理很多子弹对象。我在想我会使用类似的东西
static ArrayList<Bullet> bullets;
要在Bullet类中跟踪我的项目符号,请检查此数组列表中是否有任何不在屏幕上的项目符号,如果有,请处理它们,然后从 ArrayList 中删除该项目符号。我想知道这是否是最好的方法。这似乎应该很常见,所以我想确保这是最好的方法。
使用对象池是一种更好的方法。
在这种情况下,对象池的想法很简单,非常适合您的需求。池处理创建和存储Bullet对象。您所要做的就是obtain在需要子弹时(用户射击)调用池的方法,并在游戏中不再需要此子弹时(离开屏幕)为该子弹调用池的回收方法。
Bullet
obtain
这是一个取自 AndEngine 源代码的池的代码示例。您可以使用它来了解它的工作原理并制作自己的池类(或使用这个)。