很多人都知道的东西,只是最近在做项目的时候疏忽了。记录一下,方便查阅。
粒子系统的释放跟普通的MESH释放不同,直接Destory是不行的。必须遍历到每个子粒子系统,并逐个释放后才能删除跟节点的粒子系统。废话不多说,直接上代码
Transform tf = GoTestParticle.transform;
ParticleSystem[] pList = tf.GetComponentsInChildren<ParticleSystem>();
if (null == pList)
{
return;
}
for (int i = 0; i < pList.Length; i++)
{
ParticleSystem pTemp = pList[i];
if (pTemp.IsAlive())
{
pTemp.Stop(true);
}
DestroyImmediate(pTemp);
pTemp = null;
}
tf.DetachChildren();
DestroyImmediate(GoTestParticle);
GoTestParticle = null;
几个点:
1、正在起效的粒子系统是不能释放的,必须stop掉之后才能释放
2、遍历的时候注意列表长度,别造成越界
完成之后Detach掉所有的Children,这一步虽然不是很严谨,也比不做强。或者有其他的方式来做,但是还是注意点好
以上是这次的小结