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

Unity中如何获取包含子类实例的指定类型对象集合?

解决方案

Unity 的 FindObjectsOfType<T>() 方法本身就会返回所有T类及其派生类的活跃实例,所以你直接用原来的代码就能同时获取A、B、C的所有对象:

A[] allInstances = FindObjectsOfType<A>();

如果需要包含被禁用(activeSelf = false)的对象,可以传入第二个参数:

A[] allInstancesIncludingDisabled = FindObjectsOfType<A>(true);

补充说明

  • 这个方法返回的数组里,B和C的实例会被自动向上转型为A类型,如果你需要区分具体类型,可以用is或GetType()来判断:
    foreach (var instance in allInstances)
    {
        if (instance is B)
            Debug.Log("找到B类实例");
        else if (instance is C)
            Debug.Log("找到C类实例");
        else
            Debug.Log("找到A类实例");
    }
    
  • 注意:FindObjectsOfType 不会返回未激活的场景对象或预制体实例(除非你用第二个参数包含禁用对象),也不会返回资源文件里的对象。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:47:04