Version: 2022.3
LanguageEnglish
  • C#

TypeCache

class in UnityEditor

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Provides methods for fast type extraction from assemblies loaded into the Unity Domain.

Use TypeCache to access attributes and derived types information. This cache allows arbitrary Editor code to achieve better performance, compared to using System.Reflection, by leveriging a native cached type information.

It is a common use case to extract types marked with a specific attribute, or for classes that extend or implement a specific type, when building or extending the Unity Editor. Iterating types in the current domain is usually a slow operation that scales linearly based on the number of types.

To speed up type extraction, the Editor builds an acceleration table, on the native side, that contains information about type attributes and derived classes and interfaces.

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(); } }

Static Methods

GetFieldsWithAttributeRetrieves an unordered collection of fields marked with the T attribute.
GetMethodsWithAttributeRetrieves an unordered collection of methods marked with the T attribute.
GetTypesDerivedFromRetrieves an unordered collection of types derived from the T type.
GetTypesWithAttributeRetrieves an unordered collection of types marked with the T attribute.
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961