版本:Unity 6 (6000.0)
语言:English
C# 编译器
垃圾回收

C# 反射开销

Mono 和 IL2CPPUnity 开发的一个脚本后端,在为某些平台构建项目时,可以用它替代 Mono。 更多信息
参见 术语表
在内部缓存所有 C# 反射 (System.Reflection) 对象,并且根据设计,Unity 不会对其进行垃圾回收。这种行为的结果是,垃圾回收器在应用程序的整个生命周期中持续扫描缓存的 C# 反射对象,这会导致不必要的且可能很严重的垃圾回收器开销。

为了最大程度地减少垃圾回收器开销,请避免在应用程序中使用诸如 Assembly.GetTypesType.GetMethods() 之类的方法,这些方法在运行时会创建大量 C# 反射对象。相反,您应该在 Unity 编辑器中扫描程序集以获取所需的数据,并将其序列化和/或代码生成以供运行时使用。

其他资源

C# 编译器
垃圾回收