Unity 自身与父对象的Active状态
ActiveSelf
Unity 获得自身 Active 属性的时候可以用 gameObject.activeSelf 来获得,注意这是获取自身的 Active 属性
假如该物体的父对象在层级面板上是关闭的状态,获取到的 ActiveSelf 属性仍然是 True
那么如果想获得这个物体的父对象状态来表示他自己的状态时就需要用到 ActiveInHierarchy
ActiveInHierarchy
ActiveInHierarchy 是获取到父对象层级面板的状态
如果没有父对象的话,则 ActiveSelf 和 ActiveInHierarchy 的值是相等的
Test
测试1:层级关系为1,单一父对象
1 public GameObject Obj; 2 3 void Update() 4 { 5 if (Input.GetKeyDown(KeyCode.Q)) 6 { 7 Debug.Log("activeInHierarchy的属性为:" + Obj.activeInHierarchy); 8 } 9 if (Input.GetKeyDown(KeyCode.E)) 10 { 11 Debug.Log("activeSelf的属性为:" + Obj.activeSelf); 12 } 13 }
如图,将作为父对象的 Cube 对象关闭
测试结果:
测试2:层级关系大于1,多个父对象
将 Cube1 设为 False,Cube4 设为 True
测试结果:
接着将 Cube1 设为 True,Cube4 设为False 进行测试:
最后将所有父对象的 Cube 都设为 True 进行测试:
结论
只要目标对象的层级关系父对象中存在 False,则 ActiveInHierarchy 只能为 False
只有目标对象的所有父对象都为 True 的情况下 ActiveInHierarchy 才会为 True
而 ActiveSelf 的结果只与自身有关,与父对象无关
*** | 以上内容仅为学习参考、学习笔记使用 | ***