我正在 XNA4 中创建一个粒子系统,但遇到了问题。我的第一个粒子系统是一个简单的粒子列表,它的实例在需要时创建。但后来我读到了关于使用池的信息。
我的第二个系统由一个充满粒子的池和一个发射器/控制器组成。我的游泳池非常基本,这是代码:
class Pool<T> where T: new ()
{
public T[] pool;
public int nextItem = 0;
public Pool(int capacity)
{
pool = new T[capacity];
for (int i = 0; i < capacity; i++)
{
pool[i] = new T();
}
}
public T Create()
{
return pool[nextItem++];
}
public void Destroy(T particle)
{
pool[--nextItem] = particle;
}
}
问题是池系统更渴望 CPU。每次我从池中取出粒子到我的发射器时,我都被迫重新初始化和重置粒子,因为没有构造函数,这是一个问题。
如果我重新初始化这些粒子,或者我应该为完全相同且永不改变的对象数组留下池,那么使用池是否有任何意义?