首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SetActive()在GameObject上不适用于子对象

SetActive()在GameObject上不适用于子对象
EN

Game Development用户
提问于 2015-09-14 05:31:51
回答 1查看 3.5K关注 0票数 1

我有以下代码:

代码语言:javascript
运行
复制
GameObject.Find("_obstacles").SetActive(false);

它用于离开一个不活动的对象,但是这个对象的子对象没有得到相同的状态。

我的结果是:

对象子对象不继承父对象状态(如团结的>文档中所述)!

但是过时的方法"SetActiveRecursively()“对我有用!不是很奇怪不是吗?

EN

回答 1

Game Development用户

发布于 2015-09-14 05:39:12

您测试过子对象在游戏中是否真的是活动的吗?当需要Unity3时,行为已经与SetActiveRecursively不同了。从Unity4开始,将父对象设置为非活动对象也应该禁用子对象(在游戏中),即使它仍然在检查器中显示为活动对象。

请参阅GameObject.SetActive()的文档

请注意,由于父级不活动,GameObject可能是不活动的。在这种情况下,调用SetActive()不会激活它,而只会设置GameObject的本地状态,可以使用GameObject.activeSelf进行检查。然后,一旦所有父母都处于活动状态,就会使用此状态。

如果您确实希望禁用子对象,即使父对象被重新激活,那么您将需要自己的函数。团结不再提供它了。

下面是一个解决方案的链接,您可以将其复制粘贴到自己的代码中。

票数 1
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/108286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档