假设我正在尝试获取类型为
A
的所有对象,它继承自MonoBehaviour
:
A[] as = FindObjectsOfType<A>();
假设有继承自
B
的类C
和A
。
是否有类似的方法也包括所有
B
和C
类型的对象?
使用基本类型,FindObjectsOfType 将获取该类型的所有实例,包括继承该类型的类型。
public class TypeA : MonoBehaviour {}
public class TypeB : TypeA {}
var objects = FindObjectsOfType<TypeA>(); // will include TypeB as well
这有帮助吗?他们是继承人。
MonoBehaviour[] as = FindObjectsOfType<A>().Concat(FindObjectsOfType<B>()).Concat(FindObjectsOfType<C>());
然后你可能需要一个方法来返回所有对象并过滤它们,但它很可能很昂贵。
试试这个:
.Where((x=> typeof(x).BaseType == typeof(A)) || (x=>typeof(x) == typeof(A)))