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 编辑器版本自动定义某些脚本符号。
给定版本号X.Y.Z(例如,2019.4.14),Unity 会以以下格式公开三个全局脚本符号:UNITY_X、UNITY_X_Y 和 UNITY_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