Version: 6000.3
语言: 中文
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 和英特尔架构)的代码。
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_FACEBOOK_INSTANT_GAMES Facebook 即时游戏平台的脚本符号。
UNITY_ANALYTICS 用于调用 Unity 的脚本符号分析 Unity
的缩写 分析 在术语表中参见
方法。
UNITY_ASSERTIONS 断言控制过程的脚本符号。
UNITY_64 64 位平台的脚本符号。实际上,不应使用此功能,因为它不适用于所有 64 位体系结构,并且给定平台上的不同 CPU 体系结构可以共享相同的编译程序集。要根据体系结构有条件地执行代码,请使用标准if检查 IntPtr.Size 的语句,即4在 32 位进程中,并且8在 64 位进程中。有关示例,请参阅指令的替代方法

Unity 编辑器版本符号

Unity 会根据您当前使用的 Unity 编辑器版本自动定义某些脚本符号。

给定版本号X.Y.Z(例如,6000.0.33),Unity 公开了以下格式的三个全局脚本符号:UNITY_X,UNITY_X_YUNITY_X_Y_Z.

下面是 Unity 6000.0.33 中公开的脚本符号示例:

定义 功能
UNITY_6000 Unity 6 发布版本的脚本符号,在每个 6000.Y.Z 版本中公开。
UNITY_6000_0 Unity 6.0 主要版本的脚本符号,在每个 6000.0.Z 版本中公开。
UNITY_6000_0_33 Unity 6000.0.33 次要版本的脚本符号。

您还可以根据编译或执行一段代码片段所需的最早 Unity 版本有选择地编译代码。遵循前面描述的相同版本格式 (X.Y),Unity 公开一个全局#define在格式中UNITY_X_Y_OR_NEWER(例如,UNITY_6000_0_OR_NEWER),您可以将其用于此目的。

其他符号

Unity 定义的其他符号包括:

定义 功能
CSHARP_7_3_OR_NEWER 在生成支持 C# 7.3 或更高版本的脚本时定义。
ENABLE_MONO Mono 的脚本后端 #define。
ENABLE_IL2CPP 脚本后端 #defineIL2CPPUnity 开发的脚本后端,在为某些平台构建项目时,可以将其用作 Mono 的替代品。更多信息
请参阅术语表
.
ENABLE_VR 当目标生成平台支持VR虚拟现实 更多信息
术语表
. 并不意味着当前已启用 VR 或必要的插件Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。详细信息
请参阅术语表
并安装了支持 VR 所需的软件包。
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 运行时支持时定义。有关详细信息,请参阅 UWP 的 C# 脚本中的 WinRT API
ENABLE_INPUT_SYSTEM 玩家设置设置,可让您为 Unity 构建的最终游戏设置各种特定于玩家的选项。更多信息
请参阅术语表
.
ENABLE_LEGACY_INPUT_MANAGER 定义时输入管理器设置(Input Manager Settings) 可在其中为项目定义所有不同的输入轴、按钮和控件。更多信息
请参阅术语表
在播放器设置中启用。
DEVELOPMENT_BUILD 当你的脚本在启用了 开发构建(Development Build) 选项的情况下构建的播放器中运行时定义。

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

注意:该DEBUGsymbol 在 C# 和 Unity 中使用指令#if DEBUG相当于#if UNITY_EDITOR || DEVELOPMENT_BUILD

其他资源

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