1.依赖于平台的编译
Unity包含一个“平台相关的编译”功能。这包括一些预处理指令,让你分割你的脚本编译和专为支持的平台之一执行代码段。
您可以Unity编辑器中运行代码,这样你就可以专门为你的目标平台编译代码,并在编辑器中测试!
2.Platform #define directives
The platform #define directives that Unity supports for your scripts are as follows:
Property: | Function: |
---|---|
UNITY_EDITOR | define directive for calling Unity Editor scripts from your game code. |
UNITY_EDITOR_WIN | define directive for Editor code on Windows. |
UNITY_EDITOR_OSX | define directive for Editor code on Mac OSX. |
UNITY_STANDALONE_OSX | define directive for compiling/executing code specifically for OS X (including Universal, PPC and Intel architectures). |
UNITY_STANDALONE_WIN | define directive for compiling/executing code specifically for Windows standalone applications. |
UNITY_STANDALONE_LINUX | define directive for compiling/executing code specifically for Linux standalone applications. |
UNITY_STANDALONE | define directive for compiling/executing code for any standalone platform (OS X, Windows or Linux). |
UNITY_WII | define directive for compiling/executing code for the Wii console. |
UNITY_IOS | define directive for compiling/executing code for the iOS platform. |
UNITY_IPHONE | Deprecated. Use UNITY_IOS instead. |
UNITY_ANDROID | define directive for the Android platform. |
UNITY_PS3 | define directive for running PlayStation 3 code. |
UNITY_PS4 | define directive for running PlayStation 4 code. |
UNITY_SAMSUNGTV | define directive for executing Samsung TV code. |
UNITY_XBOX360 | define directive for executing Xbox 360 code. |
UNITY_XBOXONE | define directive for executing Xbox One code. |
UNITY_TIZEN | define directive for the Tizen platform. |
UNITY_TVOS | define directive for the Apple TV platform. |
UNITY_WP_8 | define directive for Windows Phone 8. |
UNITY_WP_8_1 | define directive for Windows Phone 8.1. |
UNITY_WSA | define directive for Windows Store Apps. Additionally, NETFX_CORE is defined when compiling C# files against .NET Core. |
UNITY_WSA_8_0 | define directive for Windows Store Apps when targeting SDK 8.0. |
UNITY_WSA_8_1 | define directive for Windows Store Apps when targeting SDK 8.1. |
UNITY_WSA_10_0 | define directive for Windows Store Apps when targeting Universal Windows 10 Apps. Additionally WINDOWS_UWP and NETFX_CORE are defined when compiling C# files against .NET Core. |
UNITY_WINRT | Equivalent to UNITY_WP_8 \ UNITY_WSA. |
UNITY_WINRT_8_0 | Equivalent to UNITY_WP_8 \ UNITY_WSA_8_0. |
UNITY_WINRT_8_1 | Equivalent to UNITY_WP_8_1 \ UNITY_WSA_8_1. This is also defined when compiling against Universal SDK 8.1. |
UNITY_WINRT_10_0 | Equivalent to UNITY_WSA_10_0 |
UNITY_WEBGL | define directive for WebGL. |
UNITY_ADS | define directive for calling Unity Ads methods from your game code. Version 5.2 and above. |
UNITY_ANALYTICS | define directive for calling Unity Analytics methods from your game code. Version 5.2 and above. |
UNITY_ASSERTIONS | define directive for assertions control process. |
From Unity 2.6.0 onwards, you can compile code selectively. The options available depend on the version of the Editor that you are working on. Given a version number X.Y.Z (for example, 2.6.0), Unity exposes three global #define directives in the following formats: UNITY_X, UNITY_X_Y and UNITY_X_Y_Z.
Here is an example of #define directives exposed in Unity 5.0.1:
UNITY_5 | #define directive for the release version of Unity 5, exposed in every 5.X.Y release.
UNITY_5_0 | #define directive for the major version of Unity 5.0, exposed in every 5.0.Z release.
UNITY_5_0_1 | #define directive for the minor version of Unity 5.0.1.
You can compile code selectively based on the earliest version of Unity required to compile or execute a given portion of code. Given the same version format as above (X.Y.Z), Unity exposes one global #define directive that can be used for this purpose, in the format UNITY_X_Y_OR_NEWER.
The supported #define directives are:
UNITY_5_3_OR_NEWER Global #define directive exposed starting from Unity 5.3.
You can also compile code selectively depending on the scripting back-end.
ENABLE_MONO Scripting back-end #define directive for Mono.
ENABLE_IL2CPP Scripting back-end #define directive for IL2CPP.
ENABLE_DOTNET Scripting back-end #define directive for .NET.
You can also use the DEVELOPMENT_BUILD #define directive to identify whether your script is running in a player which was built with the “Development Build” option enabled.
参考资料:unity官方文档