Version: Unity 6.0 (6000.0)
语言 : 中文
Unity 中的条件编译
自定义脚本符号

Unity 脚本符号参考

平台符号

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 根据您当前使用的 Unity 编辑器版本自动定义某些脚本符号。

如果版本号为 X.Y.Z__(例如,2019.4.14),Unity 将使用以下格式公开三个全局脚本符号:__UNITY_XUNITY_X_YUNITY_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

其他资源

Unity 中的条件编译
自定义脚本符号