unity3d 中粒子系统的释放

来源:互联网 发布:淘宝降权后多久恢复 编辑:程序博客网 时间:2024/06/13 23:48

很多人都知道的东西,只是最近在做项目的时候疏忽了。记录一下,方便查阅。

粒子系统的释放跟普通的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,这一步虽然不是很严谨,也比不做强。或者有其他的方式来做,但是还是注意点好


以上是这次的小结

0 0
原创粉丝点击