unity, destroy gameObject & destroy all children
2016-03-06 02:44
615 查看
一,destroy gameObject
删除名为xxx的gameObject
错误方法1:
Destroy(xxx);
以上方法之所以错误,是因为Destroy在下一帧才生效,而在本帧之内xxx还存在,所以如果接下来的逻辑对xxx是否已经立即删除有依赖。很多时候会有依赖,比如在删除xxx之后又创建同名的xxx,并使用findChild获取并修改之,则此时将无法确定到底是修改了已删除的还是修改了新创建的,则会造成莫名奇妙的逻辑错误。又比如本帧内需要正确的childCount值,则上面方法也不行。
错误方法2:
xxx.transform.parent=null;
Destroy(xxx);
问题在于 xxx.transform.parent=null这句相当于把xxx的父节点指定为unity Hierarchy的根节点。那么如果xxx本身就是挂在Hierarchy根节点上的话,则 "xxx.transform.parent=null; Destroy(xxx)"就等价于"Destroy(xxx)",由于Destroy(xxx)是错的,所以上面写法也是错的。
正确的方法:
DestroyImmediate(xxx);
二,destroy all children
删除node的所有子节点
正确的方法:
List<GameObject> childList = new List<GameObject> ();
int childCount = node.transform.childCount;
for (int i=0; i<childCount; i++) {
GameObject child=node.transform.GetChild(i).gameObject;
childList.Add(child);
}
for (int i=0; i<childCount; i++) {
DestroyImmediate(childList[i]);
}
(node.transform.childCount == 0).MustBeTrue ();
删除名为xxx的gameObject
错误方法1:
Destroy(xxx);
以上方法之所以错误,是因为Destroy在下一帧才生效,而在本帧之内xxx还存在,所以如果接下来的逻辑对xxx是否已经立即删除有依赖。很多时候会有依赖,比如在删除xxx之后又创建同名的xxx,并使用findChild获取并修改之,则此时将无法确定到底是修改了已删除的还是修改了新创建的,则会造成莫名奇妙的逻辑错误。又比如本帧内需要正确的childCount值,则上面方法也不行。
错误方法2:
xxx.transform.parent=null;
Destroy(xxx);
问题在于 xxx.transform.parent=null这句相当于把xxx的父节点指定为unity Hierarchy的根节点。那么如果xxx本身就是挂在Hierarchy根节点上的话,则 "xxx.transform.parent=null; Destroy(xxx)"就等价于"Destroy(xxx)",由于Destroy(xxx)是错的,所以上面写法也是错的。
正确的方法:
DestroyImmediate(xxx);
二,destroy all children
删除node的所有子节点
正确的方法:
List<GameObject> childList = new List<GameObject> ();
int childCount = node.transform.childCount;
for (int i=0; i<childCount; i++) {
GameObject child=node.transform.GetChild(i).gameObject;
childList.Add(child);
}
for (int i=0; i<childCount; i++) {
DestroyImmediate(childList[i]);
}
(node.transform.childCount == 0).MustBeTrue ();
相关文章推荐
- [Unity优化]unity中的优化方法
- Unity 官方自带的例子笔记 - Space Shooter
- Unity内存优化
- [Unity游戏开发]向量在游戏开发中的应用(一)
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- (五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
- Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用
- Unity3d使用心得(1):ModelImporter的使用、在代码中添加动画片段。
- 整理Unity 编辑器的相关知识
- unity www缓存图片
- 菜鸟学习 - Unity中的热更新 - LuaInterface用户指南
- Unity3d AR 增强现实技术列表(2016年3月31日更新)
- 给unity3D中的GameObject挂载脚本代码
- unity3d事件函数整理,事件,回调函数,消息处理
- Unity 摄像机旋转初探
- [Unity热更新]更新lua脚本 (二)
- Unity-飞行射击实例的代码
- Unity协程(Coroutine)
- Unity多语言本地化改进版
- Unity多语言本地化改进版