查找类型的对象,包括该类型的子类

问题描述 投票:0回答:3

假设我正在尝试获取类型为

A
的所有对象,它继承自
MonoBehaviour

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

假设有继承自

B
的类
C
A

是否有类似的方法也包括所有

B
C
类型的对象?

c# unity3d inheritance
3个回答
1
投票

使用基本类型,FindObjectsOfType 将获取该类型的所有实例,包括继承该类型的类型。

 public class TypeA : MonoBehaviour {}
 public class TypeB : TypeA {}

 var objects = FindObjectsOfType<TypeA>(); // will include TypeB as well

0
投票

这有帮助吗?他们是继承人。

MonoBehaviour[] as = FindObjectsOfType<A>().Concat(FindObjectsOfType<B>()).Concat(FindObjectsOfType<C>());

0
投票

然后你可能需要一个方法来返回所有对象并过滤它们,但它很可能很昂贵。

试试这个:

.Where((x=> typeof(x).BaseType == typeof(A)) || (x=>typeof(x) == typeof(A)))
© www.soinside.com 2019 - 2024. All rights reserved.