Unity - SetActive()在子对象上不起作用

3
我有以下代码行:

我有以下代码行:

GameObject.Find("_obstacles").SetActive(false);

它用于离开一个不活动的对象,但该对象的子元素未被赋予相同的状态。

enter image description here

Unity文档中所述,子对象不会继承父对象的状态!

但是过时的方法"SetActiveRecursively()"却奇怪地对我起作用了!O.o

enter image description here

2个回答

3
我查看了Unity的文档,并发现了这个内容,似乎他们还没有将其删除,但也不建议使用它。
SetActiveRecursively已在API中保留了4.0版本,但不建议使用,并且将来可能会被删除。
基本上它只是循环遍历父对象的子对象并设置它们的激活状态。为了以防万一Unity从其API中完全删除SetActiveRecursively,请创建一个自定义方法。
链接到SetActiveRecursively()
最后但并非最不重要的是,似乎Unity在播放模式下创建的游戏对象不会继承其父对象的活动状态。

1
最后但并非不重要的是,似乎Unity在播放模式下创建的游戏对象不会继承其父对象的活动状态。这告诉我很多!我的对象是动态创建的! - Igor
@IgoR,您需要更多的帮助吗?如果这个或其他答案对您有帮助并回答了您的问题,请不要忘记接受该答案。此外,请参阅“什么是‘已接受的答案’?”和“为什么投票很重要?”(链接见原文)。 - JohannesAndersson

-1

当然,它不会影响子游戏对象

你可以有一个对象A,带有两个子对象B和C,将它们配置为B处于活动状态,C处于非活动状态。

现在你想通过调用A.SetActive(true)来激活你的层次结构,这并不意味着你想激活C。

问题是为什么你的子对象本身是非活动的?因为一个非活动的父对象已经足够了。

我建议你保持你的子对象处于活动状态,或者开发自己的SetActiveRecursively方法循环遍历所有Transform


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接