我有以下代码:
GameObject.Find("_obstacles").SetActive(false);
它用于离开一个不活动的对象,但是这个对象的子对象没有得到相同的状态。
对象子对象不继承父对象状态(如团结的>文档中所述)!
但是过时的方法"SetActiveRecursively()
“对我有用!不是很奇怪不是吗?
发布于 2015-09-14 05:39:12
您测试过子对象在游戏中是否真的是活动的吗?当需要Unity3时,行为已经与SetActiveRecursively不同了。从Unity4开始,将父对象设置为非活动对象也应该禁用子对象(在游戏中),即使它仍然在检查器中显示为活动对象。
请参阅GameObject.SetActive()的文档
请注意,由于父级不活动,GameObject可能是不活动的。在这种情况下,调用SetActive()不会激活它,而只会设置GameObject的本地状态,可以使用GameObject.activeSelf进行检查。然后,一旦所有父母都处于活动状态,就会使用此状态。
如果您确实希望禁用子对象,即使父对象被重新激活,那么您将需要自己的函数。团结不再提供它了。
https://gamedev.stackexchange.com/questions/108286
复制相似问题