You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 16:08:10