dra*_*ziw 7 java android pool object libgdx
在我的游戏中,子弹不断创建,因此我想为此使用Pool类.然而,问题是我有很多类型的子弹.所有这些都扩展了相同的父类Projectile.目前有19种子弹.Pool为每个人创建一个类是个坏主意.还有更多可能会来.
我试图施展BallistaArrow arrow = (BallistaArrow) world.getPool().obtain();.但是我得到了施放异常:
[..].mygame.Projectile cannot be cast to [...].mygame.engineer.BallistaArrow .
BallistaArrow是Projectile的儿童类.
有没有办法解决这个问题,所以我可以Pool为所有Projectile扩展对象都有一个类?
该池包含特定类型的实例。假设其中有 10 个对象,这些将是 10 个特定实例,从池中提取对象后Projectile您无法决定该对象是什么类型。
至少有两种方法可以解决这个问题:
Projectile子类型成为运行时特化,而不是子类。因此,您只需一个Projectile类来存储所有项目符号共有的内容,并找出运行时的行为差异。请参阅在 Libgdx 中使用对象池。