以下结果为测试结论。
isActiveInHierachy,就是等价于gameObject是否处于激活状态,与简单的理解相同。
isActiveAndEnabled,需要3个条件:
- gameObject的isActiveInHierachy为true
- enabled为true
- 正在或者已经调用OnEnable
所以:
- 在一个脚本的OnEnable中,isActiveAndEnabled永远是true
- 在一个脚本的OnDisable中,isActiveAndEnabled永远是false
测试例子:在场景中放置一个GameObject,下面放两个脚本,设置GameObject和脚本全部都是激活状态。在运行场景的过程中,在先调用OnEnable的脚本中,可以发现自己的isActiveAndEnabled是true,但是另一个脚本的isActiveAndEnabled是false。
所以:还没有调用OnEnable的脚本,虽然gameObject.isActiveInHierachy是true,而且enabled 是true,但是isActiveAndEnabled是false。
本文详细解析了Unity中脚本的激活状态属性isActiveInHierarchy和isActiveAndEnabled的区别与联系。isActiveInHierarchy仅关注GameObject是否激活,而isActiveAndEnabled则需同时满足GameObject激活、脚本启用及已调用OnEnable三个条件。
448

被折叠的 条评论
为什么被折叠?



