Version: 6000.3
语言: 中文
链接 XML 格式参考
编写脚本后端

Unity 链接器标记规则参考

当 Unity 链接器执行其静态分析时,它会遵循一组规则来确定要将 CIL 字节码的哪些部分标记为生成所需的部分:

配置的托管剥离级别会更改 Unity 链接器使用的规则集。以下部分介绍每个托管剥离级别的标记规则。

根标记规则

下表描述了 Unity 链接器如何标识程序集中不同程序集类型和托管剥离级别的顶级类型:

装配类型 托管剥离级别的根标记规则
.NET 类和平台 SDK 和 UnityEngine 程序集 最小
  • 预防性保存
最小中和
  • 任何link.xml文件
具有场景中引用类型的装配 最小
  • 程序集中的所有类型和成员
高:
  • 所有具有[RuntimeInitializeOnLoadMethod][Preserve]属性。
  • 任何link.xml文件
  • 在预编译、包、Unity 脚本或程序集定义程序集中派生自 MonoBehaviour 和 ScriptableObject 的所有类型。
所有其他 最小:
  • 程序集中的所有类型和成员
  • 所有公共类型和这些类型的公共成员
高:
  • 所有具有[RuntimeInitializeOnLoadMethod][Preserve]属性。
  • 任何link.xml文件
  • 在预编译、包、Unity 脚本或程序集定义程序集中派生自 MonoBehaviour 和 ScriptableObject 的所有类型。
测试 最小中和
  • 任何带有[UnityTest]属性以及使用 NUnit.Framework 中定义的 Attribute 进行注释的任何方法。

依赖关系标记规则

Unity 链接器标识程序集中的根后,它需要标识这些根所依赖的任何代码。下表介绍了 Unity 链接器如何在不同的托管剥离级别标识程序集中根类型的依赖项:

规则目标 托管剥离级别的依赖关系标记规则
单一行为 最小中和
  • Unity 链接器在标记类型时标记 MonoBehavior 类型的所有成员
脚本对象 最小中和
  • Unity 链接器在标记类型时标记 ScriptableObject 类型的所有成员
属性 最小
  • 当 Unity 链接器标记程序集、类型或其他代码结构时,它还会标记这些结构的所有属性。
高:
  • 当 Unity 链接器标记程序集、类型或其他代码结构时,它仅在属性类型也标记时标记这些结构的属性。
调试属性 最小
  • 启用脚本调试后,Unity 链接器会标记具有[DebuggerDisplay]属性,即使没有使用这些成员的代码路径。
高:
  • Unity 链接器始终删除调试属性,例如DebuggerDisplayAttributeDebuggerTypeProxyAttribute.
.NET Facade 类库 最小中和
  • 删除外观程序集,因为它们在运行时不是必需的。

其他资源

链接 XML 格式参考
编写脚本后端