15

我有一个游戏对象,我希望在特定条件下激活它。我给了它一个独特的标签,并尝试使用据GameObject.FindObjectWithTag("Tag name").我所知,这种方法只会在场景中找到活动的游戏对象,而不是非活动的游戏对象。

有没有一种我可以调用的方法也可以搜索非活动的游戏对象?(最好按标签搜索)。

谢谢!

4

3 回答 3

24

经过一些研究,似乎没有办法通过标签找到不活动的游戏对象。

但是存在访问非活动游戏对象的解决方案:

1 - 如果您之后需要重新激活它们,将不活动的游戏对象存储在一个数组中(仅适用于在运行时不活动的游戏对象)。

2 - 不要停用游戏对象,只需停用您想要停用的组件。如果您希望使对象消失,请停用渲染器。如果是特定脚本,请停用该脚本等。

此解决方案将允许您仍然通过其标签名称找到游戏对象。

于 2013-04-23T12:12:54.050 回答
3

可以找到不活动的东西gameObjects

transform.Find() or transform.FindChild()
transform.GetComponentsInChildren<Component>(true)

Resources.FindObjectsOfTypeAll<Component>()
于 2015-07-25T05:58:40.187 回答
1

FindObjectsOfTypeAll 确实会找到不活动的,它也可能会找到预制件和你不想要的东西,所以你必须小心。

于 2013-06-12T19:07:35.187 回答