提供从加载到 Unity 域的程序集中快速提取类型的方法。
使用 TypeCache
访问属性和派生类型信息。与使用 System.Reflection 相比,此缓存允许任意编辑器代码通过利用本机缓存类型信息来实现更好的性能。
在构建或扩展 Unity 编辑器时,提取标记有特定属性的类型或扩展或实现特定类型的类是一种常见的用例。迭代当前域中的类型通常是一个缓慢的操作,其扩展性与类型数量成正比。
为了加快类型提取速度,编辑器在本地侧构建一个加速表,其中包含有关类型属性、派生类和接口的信息。
using UnityEditor; using System; using System.Collections.Generic; using System.Linq;
public class VolumeComponent {}
public class Example { static List<Type> s_VolumeComponents; static Example() { s_VolumeComponents = TypeCache.GetTypesDerivedFrom<VolumeComponent>().ToList(); } }
GetFieldsWithAttribute | 检索标记为 T 属性的字段的无序集合。 |
GetMethodsWithAttribute | 检索标记为 T 属性的方法的无序集合。 |
GetTypesDerivedFrom | 检索从 T 类型派生的类型的无序集合。 |
GetTypesWithAttribute | 检索标记为 T 属性的类型的无序集合。 |