Unity中如何查找挂载指定脚本的所有激活与非激活GameObject?
解决Unity无法找到非激活GameObject上脚本的问题
嘿,这个问题我太熟悉了!Unity自带的FindObjectsOfType方法默认只会检索处于激活状态的GameObject及其挂载的组件,所以非激活对象上的脚本自然不会被纳入结果。
解决起来很简单,只需要使用FindObjectsOfType的重载版本,把第二个参数includeInactive设为true就可以了,它会强制方法遍历场景中所有对象,不管其激活状态:
public myScript[] commonScripts; void Start() { // 使用泛型重载+includeInactive参数,无需强制类型转换 commonScripts = FindObjectsOfType<myScript>(true); }
额外说明:
- 这个重载方法会扫描当前所有已加载场景中的对象,包括隐藏/非激活GameObject上的目标脚本
- 如果你的项目有大量对象,这个操作可能会有轻微性能开销,建议只在必要时调用(比如初始化阶段)
- 如果你需要检索未加载的预制体中的脚本,这个方法就不适用了,得用资源加载类的API单独处理
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

