版本: Unity 6 (6000.0)
语言英语
  • C#

TypeCache

UnityEditor 中的类

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们会阅读用户提出的每项更改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后重试</a>。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

描述

提供从加载到 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 属性的类型的无序集合。