Unity 根据制作和构建目标平台自动定义某些符号。如下所示:
| Define | 功能 |
|---|---|
| UNITY_EDITOR | 用于从游戏代码中调用 Unity 编辑器脚本的脚本符号。 |
| UNITY_EDITOR_WIN | 用于 Windows 中编辑器代码的脚本符号。 |
| UNITY_EDITOR_OSX | 用于 macOS 上编辑器代码的脚本符号。 |
| UNITY_EDITOR_LINUX | 用于 Linux 上编辑器代码的脚本符号。 |
| UNITY_EMBEDDED_LINUX | 用于嵌入式 Linux 的脚本符号。 |
| UNITY_QNX | 用于 QNX 的脚本符号。 |
| UNITY_STANDALONE_OSX | 用于专门为 macOS(包括 Universal、PPC 和 Intel 架构)编译或执行代码的脚本符号。 |
| UNITY_STANDALONE_WIN | 用于专门为 Windows 独立平台应用程序编译/执行代码的脚本符号。 |
| UNITY_STANDALONE_LINUX | 用于专门为 Linux 独立平台应用程序编译/执行代码的脚本符号。 |
| UNITY_STANDALONE | 用于为任何独立平台(Mac OS X、Windows 或 Linux)编译/执行代码的脚本符号。 |
| UNITY_SERVER | 用于为专用服务器(macOS、Windows 或 Linux)编译/执行代码的脚本符号。 |
| UNITY_IOS | 用于为 iOS 平台编译/执行代码的脚本符号。 |
| UNITY_ANDROID | 用于 Android 平台的播放器设置。 |
| UNITY_TVOS | 用于 Apple TV 平台的播放器设置。 |
| UNITY_VISIONOS | 用于 VisionOS 平台的脚本符号。 |
| UNITY_WSA | 用于通用 Windows 平台的脚本符号。 |
| UNITY_WSA_10_0 | 用于通用 Windows 平台的脚本符号。 |
| UNITY_WEBGL | 用于 Web 的脚本符号。 |
| UNITY_ANALYTICS | 用于从游戏代码中调用 Unity__ Analytics__Unity Analytics 的缩写 See in Glossary 方法的脚本符号。 |
| UNITY_ASSERTIONS | 用于断言控制过程的脚本符号。 |
| UNITY_64 | 64 位平台的脚本符号。实际上,不应使用此脚本符号,因为它不适用于所有 64 位架构。并且在给定平台上,不同的 CPU 架构可能共享相同的编译程序集。要基于架构有条件地执行代码,请使用标准 if 语句来检查 IntPtr.Size,在 32 位进程中其值为 4,在 64 位进程中其值为 8。有关示例,参见指令的替代方案。 |
Unity 根据您当前使用的 Unity 编辑器版本自动定义某些脚本符号。
如果版本号为 X.Y.Z__(例如,2019.4.14),Unity 将使用以下格式公开三个全局脚本符号:__UNITY_X、UNITY_X_Y 和 UNITY_X_Y_Z。
以下是 Unity 2019.4.14 中公开的脚本符号的示例:
| Define | 功能 |
|---|---|
| UNITY_2019 | 用于 Unity 2019 发行版的脚本符号,在每个 2019.Y.Z 版本中公开。 |
| UNITY_2019_4 | 用于 Unity 2019.4 主要版本的脚本符号,在每个 2019.4.Z 版本中公开。 |
| UNITY_2019_4_14 | 用于 Unity 2019.4.14 次要版本的脚本符号。 |
也可根据编译或执行部分代码片段所需的最早 Unity 版本来有选择地编译代码。如果采用与上面相同的版本格式 (X.Y),Unity 将以 UNITY_X_Y_OR_NEWER 格式公开一个可用于此目的的全局 #define。
Unity 定义的其他符号包括:
| Define | 功能 |
|---|---|
| CSHARP_7_3_OR_NEWER | 在构建支持 C# 7.3 或更高版本的脚本时定义。 |
| ENABLE_MONO | 用于 Mono 的脚本后端 #define。 |
| ENABLE_IL2CPP | 用于__ IL2CPP__种由 Unity 开发的脚本后端,可在为某些平台构建项目时替代 Mono。更多信息 See in Glossary 的脚本后端 #define。 |
| ENABLE_VR | 在目标构建平台支持__ VR__虚拟现实。更多信息 See in Glossary 时定义。并不意味着当前已启用 VR,也不意味着支持 VR 所需的必要插件和包已安装。 |
| NET_2_0 | 在 Mono 和 IL2CPP 上根据 .NET 2.0 API 兼容性级别构建脚本时定义。 |
| NET_2_0_SUBSET | 在 Mono 和 IL2CPP 上根据 .NET 2.0 Subset API 兼容性级别构建脚本时定义。 |
| NET_LEGACY | 在 Mono 和 IL2CPP 上根据 .NET 2.0 或 .NET 2.0 Subset API 兼容性级别构建脚本时定义。 |
| NET_4_6 | 在 Mono 和 IL2CPP 上根据 .NET 4.x API 兼容性级别构建脚本时定义。 |
| NET_STANDARD_2_0 | 在 Mono 和 IL2CPP 上根据 .NET 标准 2.0 API 兼容性级别构建脚本时定义。 |
| NET_STANDARD_2_1 | 在 Mono 和 IL2CPP 上根据 .NET 标准 2.1 API 兼容性级别构建脚本时定义。 |
| NET_STANDARD | 在 Mono 和 IL2CPP 上根据 .NET 标准 2.1 API 兼容性级别构建脚本时定义。 |
| NETSTANDARD2_1 | 在 Mono 和 IL2CPP 上根据 .NET 标准 2.1 API 兼容性级别构建脚本时定义。 |
| NETSTANDARD | 在 Mono 和 IL2CPP 上根据 .NET 标准 2.1 API 兼容性级别构建脚本时定义。 |
| ENABLE_WINMD_SUPPORT | 在 IL2CPP 上启用 Windows 运行时支持时定义。有关更多信息,请参阅 Windows 运行时支持。 |
| ENABLE_INPUT_SYSTEM | 在 Player Settings 中启用 Input System 包时定义。 |
| ENABLE_LEGACY_INPUT_MANAGER | 在 Player Settings 中启用旧版 Input Manager 时定义。 |
| DEVELOPMENT_BUILD | 确定脚本何时在启用了 Development Build 选项的情况下构建的播放器中运行。 此定义仅反映了在构建时是否启用了开发构建选项。要了解脚本是否在开发构建模式下运行,请使用 Debug.isDebugBuild。 __DEVELOPMENT\_BUILD__ 不足以确定当前是否在开发构建中运行,因为大多数平台允许在不重新构建项目的情况下在开发构建和非开发构建之间切换。但是,在某些平台上,Unity 不支持在编辑器中在开发构建和非开发构建之间切换,并且需要在构建完成后进行切换。例如,在 Windows 上,可以选择创建 Visual Studio 解决方案选项,从而选择是否在 Visual Studio 中使用开发构建或非开发构建。在 Visual Studio 中切换不会重新编译脚本,因此不会重新评估脚本定义。还可以通过将游戏构建中的 UnityPlayer.dll 替换为来自开发构建的版本,来将最终游戏构建切换为开发构建,从而调试实时游戏构建。 |
| UNITY_CLOUD_BUILD | 已在使用 Unity Build Automation 构建项目时定义。 |
注意:DEBUG 符号在 C# 中是预定义的,在 Unity 中使用指令 #if DEBUG 等同于 #if UNITY_EDITOR || DEVELOPMENT_BUILD