Unity GameObject.activeSelf, GameObject.activeInHierarchy,GameObject.SetActive和SetActiveRecursively_unity gameobject activeself-程序员宅基地

技术标签: unity 3d  

activeSelf(read only只读):物体本身的active状态,对应于其在inspector中的checkbox是否被勾选
activeInHierarchy(read only只读):物体在层次中是否是active的。也就是说要使这个值为true,这个物体及其所有父物体(及祖先物体)的activeself状态都为true。

一个物体要在场景中是可见的(不是隐藏的),那么不仅仅其本身的activeSelf要为true,其所有父物体(及祖先物体)的activeself状态都要为true。

总结:
activeInHierarchy状态代表物体在场景中的实际的active状态。实际上代表的是物体及其所有祖先物体的activeSelf状态。而activeSelf对应于其在inspector中的checkbox是否被勾选

activeSelf状态代表物体自身的activeSelf状态,所以当物体本身activeSelf为true,而其所有祖先物体的activeSelf状态不全为true时,这个物体的activeInHierarchy状态为false。

activeSelf==物体自身
activeInHierarchy==物体自身及其所有祖先物体==物体在场景中实际上是否激活

至于SetActive,改变的是物体自身的activeSelf状态,所以,对一个物体SetActive时,其在场景中可能不会被激活,因为其祖先物体可能存在未被激活的。
SetActiveRecursively,改变物体自身及其所有子物体的activeSelf状态,相当于对物体自身及其所有子物体调用SetActive.
由于SetActiveRecursively已过时(obsolete),未来将移除,所以,当设置一个物体及其所有子物体的active状态时,可以调用一下方法

void DeactivateChildren(GameObject g, bool a) {
    g.activeSelf = a;
    
    foreach (Transform child in g.transform) {
        DeactivateChildren(child.gameObject, a);
    }
}

Advanced Skill :

 Using Extension Method

 

public static class Extensions
{
    public static void SetactivateForAllChildren(this GameObject go, bool state)
    {
        DeactivateChildren(go, state);
    }

    public static void DeactivateChildren(GameObject go, bool state)
    {
        go.SetActive(state);

        foreach (Transform child in go.transform)
        {
            DeactivateChildren(child.gameObject, state);
        }
    }
}

  

Now You Can Use Like That:

public  class MyTest : MonoBehaviour {

    public GameObject go;
	// Use this for initialization
	void Start () {
        //过时
        //go.SetActiveRecursively(true);
        go.SetactivateForAllChildren(true);
	}
}

 

bubuko.com,布布扣

 

bubuko.com,布布扣

 

参考:

  http://blog.csdn.net/czlilove/article/details/23827267

      Unity 3.5 到 4.0升级指南 Upgrade Guide from Unity 3.5 to 4.0

      http://game.ceeger.com/Manual/UpgradeGuide3540.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/laogao418/article/details/50518292

智能推荐

raid卡 4k 设置 linux,Linux上Raid卡的简单配置与使用-程序员宅基地

文章浏览阅读288次。文章目录[隐藏]资源工具安装使用 RAID 可以提高服务器的性能。不同 RAID 的级别,性能会有所不同。它通过容错和高可用性来保存我们的数据。下面记录在linux上配置和使用raid卡的过程。资源Linux主机Raid卡(LSI MegaRAID SAS 9271-8i)两块希捷1T机械硬盘工具Raid工具:MegaCli64或storcli64fdisk(分区)mkfs(格式化分区文件系统)d..._提高raid 4k性能

国家电网计算机操作,2018年国家电网考试备考计算机之操作系统-程序员宅基地

文章浏览阅读458次。加入2021湖南事业单位学习Q群获取资料,群号:709010555 计算机——操作系统1、进程管理为了提高CPU的利用率而采用多道程序技术。通过进程管理来协调多道程序之间的关系,使CPU得到充分的利用。2、并发控制并发控制指的是当多个用户同时更新运行时,用于保护数据库完整性的各种技术。3、死锁死锁,是指多个进程因竞争资源而造成的一种僵局,若无外力作这些进程都将永远不能再向前推进。产生死锁的原...

java 纳秒 格式化_Java8生成时间方式以及格式化时间-程序员宅基地

文章浏览阅读2.8k次。LocalDate类第一种:直接生成当前时间LocalDate date = LocalDate.now();System.out.println(date);结果:2020-08-20第二种:使用 LocalDate.of 构建时间LocalDate date = LocalDate.now();date = LocalDate.of(2020, 9, 20);System.out.printl..._格式化为纳秒

ios内存泄露的问题_zzphotolistviewcontroller出现 内存泄漏啦-程序员宅基地

文章浏览阅读753次。最近一直碰到苹果的内存释放的问题:ViewController关闭后没有被释放,导致内存噌噌的上涨,于是检查发现存在以下问题1、ViewController和TableCell互相之间strong引用2、ViewController和delegate互相之间strong引用这些都会导致很严重的ViewController内存泄露,解决方法是第一:ViewController已经_zzphotolistviewcontroller出现 内存泄漏啦

linux 按天切割日志(logrotate)_logrotate按天切割日志-程序员宅基地

文章浏览阅读2.1k次。logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行安装后系统会定时运行logrotate,一般是每天一次。系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate。在centos上脚本内容是这样的:/usr/sbin/logrotate /etc/logrotate.co_logrotate按天切割日志

窗体上有两个文本框:一个文本框中最多输入字符6个;一个文本框中输入任何内容都显示*号。再添加一个按钮、2个单选按钮。实现单击按钮后,根据单选按钮,将对应文本框中内容显示在标签_窗体characters中有两个文本框-程序员宅基地

文章浏览阅读1w次。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;name_窗体characters中有两个文本框

随便推点

springboot 和 elasticsearch 版本对应关系_elasticsearch8.10.2对应springboot版本-程序员宅基地

文章浏览阅读1k次。springboot版本 和 elasticsearch版本 对应关系_elasticsearch8.10.2对应springboot版本

怎么用网页进入mysql,通过页面打开mysql连接完全鲁ck吗?-程序员宅基地

文章浏览阅读100次。When querying the db is it plausible to feel extremely paranoid? I go as far as opening and closing mysql connection every time a new query has to be done. I am afraid that (especially with the ajax e..._用网页怎么打开mysql

c语言采用解释方式将源程序转换为,C语言采用解释方式将源程序转换为二进制的目标代码。()...-程序员宅基地

文章浏览阅读600次。C语言采用解释方式将源程序转换为二进制的目标代码。()更多相关问题【单选题】广播电视新闻应当遵守的原则是()A. 自由平等B. 公开公平C. 真实公正D. 效率原则【问答题】简述ZHDQ—32/10型水电解制氢装置在启动过程中,系统的压力、温度及碱液循环流量等参数的调节与控制。【单选题】系统性红斑狼疮患者发生口腔真菌感染时,可选用的漱口液为()A. 1%~4%碳酸氢钠溶液B. 2%~3%硼酸溶液C..._it will be requested that he his homework this afternoon

Oracle Awr报告分析-细节_oracle中arw报告分析-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏16次。Oracle Awr报告分析-细节内容衔接细节剖析SQL Statistic分析ASH Report分析分析结论内容衔接在进行Oracle Awr报告分析中,我们的分析思路是先总后分。先从Awr的总览信息中,分析系统的负载、数据库繁忙程度、严重的等待事件等,再从具体的事务入手分析。在上一篇文章Oracle Awr报告分析-总览,我们分析得出如下结论:CPU利用率超过100%,说明出现了等待事件;数据库非常繁忙,数据变更频率快,每秒产生日志量达到27M;数据库软解析非常高,达到了100%;主要_oracle中arw报告分析

springboot实现国际化案例(全)-程序员宅基地

文章浏览阅读5.9k次。在springmvc中实现国际化的步骤1、编写国际化配置文件,我们将要显示的内容都配置出来;2、使用resourcebundlemessagesource来管理国际化资源文件;3、如果是以前的jsp页面,可以使用fmt:message来取出国际化的内容;springboot的配置抽取页面需要显示的国际化消息;示例:在登录页面进行国际化的配置;login.properitieslogin.tip=请登录~login.username=用户名~login_en_US.

VS2012运行opencv程序时缺少MSVCP120D.dll_opencv msvcp120d.dl-程序员宅基地

文章浏览阅读8.1k次。首先声明,看清题目,是VS2012(或更低版本),缺少的是MSVCP120D.dll,至于原因,后面说。当然,其余的VS和缺少其余的dll也可以参考1. 问题原因这个很重要,很多网上的解决方案都是找个vcredist_x86之类的C++运行库安装一下,有的还直接下载MSVCP120D.dll,将其拖入系统文件夹再进行regsvr32命令操作之类的.....这些方案至少对于我的问题是_opencv msvcp120d.dl

推荐文章

热门文章

相关标签