版本:Unity 6 (6000.0)
语言:英语
Unity 中的条件编译
自定义脚本符号

Unity 脚本符号参考

平台符号

Unity 会根据创作和构建目标平台自动定义某些符号。以下是这些符号:

定义 功能
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(包括通用、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 分析Unity 分析的缩写
请参阅 术语表
方法。
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 中公开的脚本符号示例

定义 功能
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 定义的其他符号为

定义 功能
CSHARP_7_3_OR_NEWER 使用 C# 7.3 或更高版本支持编译脚本时定义。
ENABLE_MONO Mono 的脚本后端 #define。
ENABLE_IL2CPP 用于 IL2CPPUnity 开发的脚本后端,您可以将其用作构建某些平台项目时 Mono 的替代方案。 更多信息
请参阅 术语表
的脚本后端 #define。
ENABLE_VR 目标构建平台支持 VR虚拟现实 更多信息
请参阅 术语表
时定义。不表示 VR 当前已启用,也不表示已安装支持 VR 所需的 插件在 Unity 之外创建的一组代码,可在 Unity 中创建功能。您可以在 Unity 中使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(平台特定的原生代码库)。 更多信息
请参阅 术语表
和包。
NET_2_0 使用 Mono 和 IL2CPP 针对 .NET 2.0 API 兼容性级别构建脚本时定义。
NET_2_0_SUBSET 使用 Mono 和 IL2CPP 针对 .NET 2.0 子集 API 兼容性级别构建脚本时定义。
NET_LEGACY 使用 Mono 和 IL2CPP 针对 .NET 2.0 或 .NET 2.0 子集 API 兼容性级别构建脚本时定义。
NET_4_6 使用 Mono 和 IL2CPP 针对 .NET 4.x API 兼容性级别构建脚本时定义。
NET_STANDARD_2_0 使用 Mono 和 IL2CPP 针对 .NET Standard 2.0 API 兼容性级别构建脚本时定义。
NET_STANDARD_2_1 使用 Mono 和 IL2CPP 针对 .NET Standard 2.1 API 兼容性级别构建脚本时定义。
NET_STANDARD 使用 Mono 和 IL2CPP 针对 .NET Standard 2.1 API 兼容性级别构建脚本时定义。
NETSTANDARD2_1 使用 Mono 和 IL2CPP 针对 .NET Standard 2.1 API 兼容性级别构建脚本时定义。
NETSTANDARD 使用 Mono 和 IL2CPP 针对 .NET Standard 2.1 API 兼容性级别构建脚本时定义。
ENABLE_WINMD_SUPPORT 在 IL2CPP 上启用 Windows 运行时支持时定义。有关更多信息,请参考 Windows 运行时支持
ENABLE_INPUT_SYSTEM 播放器设置设置,允许您为 Unity 构建的最终游戏设置各种特定于播放器的选项。 更多信息
请参阅 术语表
中启用输入系统包时定义。
ENABLE_LEGACY_INPUT_MANAGER 在播放器设置中启用传统 输入管理器设置,您可以在其中定义项目的所有不同输入轴、按钮和控件。 更多信息
请参阅 术语表
时定义。
DEVELOPMENT_BUILD 当您的脚本在启用开发构建选项构建的播放器中运行时定义。

此定义仅反映构建时是否启用了开发构建选项。若要了解您的脚本是否在开发构建模式下运行,请使用 Debug.isDebugBuild__DEVELOPMENT\_BUILD__不足以确定您当前是否在开发构建中运行,因为大多数平台允许在不重新构建项目的情况下在开发构建和非开发构建之间切换。但是,在某些平台上,Unity 不支持在编辑器中在开发构建和非开发构建之间切换,需要您在构建完成后进行切换。例如,在 Windows 上,您可以选择创建 Visual Studio 解决方案选项,以选择在 Visual Studio 中是否要创建开发构建或非开发构建。在 Visual Studio 中进行切换不会重新编译您的脚本,因此不会重新评估脚本定义。您还可以通过将游戏构建中的 UnityPlayer.dll 与开发构建中的 UnityPlayer.dll 进行交换,从最终的游戏构建切换到开发构建,以调试实时游戏构建。
UNITY_CLOUD_BUILD 使用 Unity 构建自动化Unity 项目的持续集成服务,可自动执行在 Unity 服务器上创建构建的过程。 更多信息
请参阅 术语表
构建项目时定义。

注意DEBUG 符号在 C# 中预定义,在 Unity 中使用指令 #if DEBUG 等效于 #if UNITY_EDITOR || DEVELOPMENT_BUILD

其他资源

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