Unity删除所有子物体保留父物体的2种方式
2015-09-07 18:01
1361 查看
今天遇到了这个问题,最后得出了2种解决方案,经过测试后,销毁所有子物体所用的时间,基本相同
情景:有一个父物体A,有子物体B1.B2.B3......B10等10个子物体
现在想销毁B1----B10,保留A
方法一:找到所有子物体,依次销毁
方法二:给每个子物体添加一个自我销毁的方法,在满足特定条件的情况下发送广播
方法一:
方法二:
-------------------------------------------------------------------------
总结:这两种方法本质上都是遍历
我个人认为for循环的方法更好一些
第二种广播方法的方法也是遍历,但会从自身开始遍历
所以说,第二种方法会比第一种方法多遍历1次。
经过测试后,两种方法在当今年代的设备上效率基本相同
所以,用自己喜欢的吧
情景:有一个父物体A,有子物体B1.B2.B3......B10等10个子物体
现在想销毁B1----B10,保留A
方法一:找到所有子物体,依次销毁
方法二:给每个子物体添加一个自我销毁的方法,在满足特定条件的情况下发送广播
方法一:
using UnityEngine; using System.Collections; /// <summary> /// 脚本位置:将此脚本挂载到父物体A身上 /// 脚本功能:用于测试销毁所有子物体 /// </summary> public class Parent : MonoBehaviour { void Start () { for (int i = 0; i < transform.childCount; i++) { Destroy (transform.GetChild (i).gameObject); } } }
方法二:
using UnityEngine; using System.Collections; /// <summary> /// 脚本位置:将此脚本挂载到父物体A身上 /// 脚本功能:发送广播给自己和自己的所有子物体 /// </summary> public class Parent : MonoBehaviour { void Start () { // 执行Start方法后会发送一个广播 // 广播会从自身开始查找这个DestoryMe方法,查找完自身后会查找所有子物体 BroadcastMessage ("DestoryMe"); } }
using UnityEngine; using System.Collections; /// <summary> /// 脚本位置:每个需要被销毁的子物体身上 /// 脚本功能:销毁自身 /// </summary> public class Son : MonoBehaviour { // 作为被广播通知的方法,由父物体通知执行 public void DestoryMe () { Destroy (gameObject); } }
-------------------------------------------------------------------------
总结:这两种方法本质上都是遍历
我个人认为for循环的方法更好一些
第二种广播方法的方法也是遍历,但会从自身开始遍历
所以说,第二种方法会比第一种方法多遍历1次。
经过测试后,两种方法在当今年代的设备上效率基本相同
所以,用自己喜欢的吧
相关文章推荐
- Unity 加密解密那些事
- Unity学习疑问记录之协程
- Unity3D: NGUI自定义Atlas,Font
- Unity 2D游戏开发教程之为游戏场景添加多个地面
- Unity 2D游戏开发教程之为游戏场景添加多个地面
- unity动态美术字体制作
- Unity3D教程:动画合成教程(Animation Blending)
- Unity下Android利用Ant构建打包
- 【Unity Shaders】初探Surface Shader背后的机制
- Unity-使用面向对象的思想
- Unity中内嵌网页插件UniWebView使用总结
- Unity Mobile Device Input
- unity3d 4.2.0 破解软件及教程
- Unity3D游戏场景优化之批处理
- Unity 2D游戏开发教程之精灵的死亡和重生
- Unity 2D游戏开发教程之精灵的死亡和重生
- Unity性能优化之LOD Group
- unity3d软件各个历史版本下载
- unity 常用网站、插件、技术记录
- 【Unity】Update()和FixedUpdate()