我有一个游戏对象,我希望在特定条件下激活它。我给了它一个独特的标签,并尝试使用据GameObject.FindObjectWithTag("Tag name").
我所知,这种方法只会在场景中找到活动的游戏对象,而不是非活动的游戏对象。
有没有一种我可以调用的方法也可以搜索非活动的游戏对象?(最好按标签搜索)。
谢谢!
经过一些研究,似乎没有办法通过标签找到不活动的游戏对象。
但是存在访问非活动游戏对象的解决方案:
1 - 如果您之后需要重新激活它们,将不活动的游戏对象存储在一个数组中(仅适用于在运行时不活动的游戏对象)。
2 - 不要停用游戏对象,只需停用您想要停用的组件。如果您希望使对象消失,请停用渲染器。如果是特定脚本,请停用该脚本等。
此解决方案将允许您仍然通过其标签名称找到游戏对象。
可以找到不活动的东西gameObjects
:
transform.Find() or transform.FindChild()
transform.GetComponentsInChildren<Component>(true)
Resources.FindObjectsOfTypeAll<Component>()
FindObjectsOfTypeAll 确实会找到不活动的,它也可能会找到预制件和你不想要的东西,所以你必须小心。