我有一个单元类和它的一些子类(Archer,Swordsman等)。
我怎样才能建立一个回收所有那些类型为unit的子类的池?
最佳答案
这是不可能的,因为Pool
只能包含一种特定类型的对象。否则,您可能会遇到以下情况:
Pool<Unit> unitPool = ...;
Archer acher = new Archer();
unitPool.free(archer); // we free an Archer, who is a Unit
Unit swordsmanUnit = unitPool.obtain(); // we can obtain only Units
Swordsman swordsman = (Swordsman) swordsmanUnit; // This is actually an Archer and will result in a ClassCastException
幸运的是,libgdx附带了一个名为
Pools
的实用程序,用于轻松合并许多不同的类。它为每个类创建一个ReflectionPool
,并从正确的池中释放/获取对象。只需将您的Unit
类设置为Poolable
。Archer archer = Pools.obtain(Archer.class);
Swordsman swordsman = Pools.obtain(Swordsman.class);
// ...
Pools.free(archer);
Pools.free(swordsman);
关于java - 不同类型的childs对象的libgdx池,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31246559/