我有以下代码行:我有以下代码行: GameObject.Find("_obstacles").SetActive(false); 它用于离开一个不活动的对象,但该对象的子元素未被赋予相同的状态。 Unity文档中所述,子对象不会继承父对象的状态! 但是过时的方法"SetActiveRecursively()"却奇怪地对我起作用了!O.o
我查看了Unity的文档,并发现了这个内容,似乎他们还没有将其删除,但也不建议使用它。SetActiveRecursively已在API中保留了4.0版本,但不建议使用,并且将来可能会被删除。基本上它只是循环遍历父对象的子对象并设置它们的激活状态。为了以防万一Unity从其API中完全删除SetActiveRecursively,请创建一个自定义方法。链接到SetActiveRecursively()。最后但并非最不重要的是,似乎Unity在播放模式下创建的游戏对象不会继承其父对象的活动状态。
当然,它不会影响子游戏对象 你可以有一个对象A,带有两个子对象B和C,将它们配置为B处于活动状态,C处于非活动状态。 现在你想通过调用A.SetActive(true)来激活你的层次结构,这并不意味着你想激活C。 问题是为什么你的子对象本身是非活动的?因为一个非活动的父对象已经足够了。 我建议你保持你的子对象处于活动状态,或者开发自己的SetActiveRecursively方法循环遍历所有Transform。