一,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 ();

unity, destroy gameObject & destroy all children的更多相关文章

  1. unity 隐藏GameObject的方法(转)

    改position,移到视野外,推荐,最节省 gameObject.SetActive (false); //要提前引用,要不你就改不回来了... renderer.enabled = false; ...

  2. angular destroy & jquery destroy

    destroy的目的是为了内存溢漏,这对性能会造成影响. angular scope在处理element 移除时,会触发destroy, 而调用逻辑和jquery使用的一样. 在ck editor 中 ...

  3. Destroy reall destroy ?!

    最近做战斗逻辑的时候发现一个问题 测试脚本mTest: public class mTest : MonoBehaviour { public mTest2 tmp2; void OnGUI() { ...

  4. Unity(GameObject)

    ####1. 这个方法用于发送一个数据到指定的方法中,第三个参数是是否强制接收 以下三种方法发送消息的形式,各有不同的效果,可以通过第一个参数指定要发送的方法名名,第二个是发送的参数值,第三个参数是是 ...

  5. 关于Unity中FPS第一人称射击类游戏制作(专题十)

    当前Unity最新版本5.6.3f1,我使用的是5.5.1f1 场景搭建 1: 导入人物模型, 手持一把枪;2: 导入碎片模型;3: 创建一个平面;4: 创建一个障碍物;5: 导入人物模型;6: 配置 ...

  6. unity 3d孤岛求生案例代码解析

    这是第一人称控制器脚本,如果把摄像机放在胶囊体后面感觉就是第三人称了啊. #pragma strict var speed : float = 6.0; var jumpspeed: float = ...

  7. Unity + NGUI 实现人物头顶UI的信息展示

    1.思路: (1)信息数据:需要展示属性信息 (2)信息的展示:负责显示UI属性信息 (3)UI的跟随:负责实现UI对人物的跟随 (4)UI的管理:负责对UI进行创建于回收,游戏中需要用到UI的地方都 ...

  8. [Unity3D] C# Basic : Gameplay Scripting

    教程:https://unity3d.com/cn/learn/tutorials/s/scripting 补充:http://www.runoob.com/csharp/csharp-inherit ...

  9. UNITY Destroy()和DestroyImadiate()的区别

    using System.Collections; using System.Collections.Generic; using System.Timers; using UnityEngine; ...

随机推荐

  1. TCP通信粘包问题分析和解决(全)(转)

    TCP通信粘包问题分析和解决(全) 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的.因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送 ...

  2. Fiddler2 中文手册

    原文:http://blog.sina.com.cn/s/blog_66a13b8f0100vgfi.html 最近一阵研究 Fiddler2 的使用来着,一开始看起来有点找不着北,索性就根据官网资料 ...

  3. 【资料】wod地城掉落

    •林中强盗第三层樵夫的皮带子蓝色毡帽面包刀(必定掉) •前往米勒巴赫的旅程第一层木棒邪恶强盗披风邪恶强盗匕首第二层地精盾第三层一瓶啤酒(必定掉大啤酒杯(必定掉 •喧嚷的酒吧第一层指挥棒(传奇等级10旅 ...

  4. chromium的安装程序

    转自:http://www.xue163.com/182/6/1822338.html#pinglun 这篇文章主要简单讲解chromium的安装程序mini_installer 在编译mini_in ...

  5. [Linux] git send-email的使用

    1. git send-email is included in an individual package, named "git-email":$ sudo apt-get i ...

  6. threading.local()、多线程里全局变量锁

    这个人的系列文章值得一读:http://blog.51cto.com/suhaozhi/category3.html/p2,不过这个系列总共15偏,Python并发入门,有很多文字描述错误,有些道理也 ...

  7. go语言基础之递归函数的调用流程

    一.递归函数的调用流程 package main //必须 import "fmt" func test(a int) { if a == 1 { //函数终止调用的条件,非常重要 ...

  8. JSP学习笔记(五):日期处理、页面重定向、点击量统计、自动刷新和发送邮件

    一.JSP 日期处理: 使用JSP最重要的优势之一,就是可以使用所有Java  API.本节讲述Java中的Date类,它在java.util包下,封装了当前日期和时间. Date类有两个构造函数.第 ...

  9. -bash: ./xxx.sh: /bin/bash^M: bad interpreter: No such file or directory

    问题的原因是在windows下编辑然后上传到linux系统里执行的..sh文件的格式为dos格式.而linux只能执行格式为unix格式的脚本. 不要使用记事本编辑,使用代码编辑器可以正常执行

  10. jdk1.7下载路径

    http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html