有时候我们需要使用区分不同平台来实现不同的逻辑,这个时候就用到宏定义了
基本语法
#if UNITY_EDITOR_WIN ||UNITY_STANDALONE #elif UNITY_ANDROID #else #endif
宏定义可以直接写在类中,也可以写在方法体中,工作方式和普通if else完全一致
以下为常用定义
// C# using UnityEngine; using System.Collections; public class PlatformDefines : MonoBehaviour { void Start () { #if UNITY_EDITOR Debug.Log("Unity Editor"); #endif #if UNITY_IOS Debug.Log("Iphone"); #endif #if UNITY_STANDALONE_OSX Debug.Log("Stand Alone OSX"); #endif #if UNITY_STANDALONE_WIN Debug.Log("Stand Alone Windows"); #endif } }
#if UNITY_EDITOR Debug.Log("Unity Editor"); #elif UNITY_IOS Debug.Log("Unity iPhone"); #else Debug.Log("Any other platform"); #endif
可以自定义宏定义,打开Other Settings窗口,选择Player Settings > Scripting Define Symbols
官方文档网址:https://docs.unity3d.com/Manual/PlatformDependentCompilation.html
本文章转译自官方文档
Property: Function:
UNITY_EDITOR Unity编辑器
UNITY_EDITOR_WIN Windows 操作系统.
UNITY_EDITOR_OSX macos操作系统
UNITY_STANDALONE_OSX 专门为macos(包括Universal, PPC,Intel architectures)平台的定义
UNITY_STANDALONE_WIN 专门为windows平台的定义
UNITY_STANDALONE_LINUX 专门为Linux平台的定义
UNITY_STANDALONE 独立平台 (Mac OS X, Windows or Linux).
UNITY_WII WII 游戏机平台
UNITY_IOS iOS系统平台
UNITY_IPHONE iPhone
UNITY_ANDROID android系统平台
UNITY_PS4 ps4平台
UNITY_SAMSUNGTV 三星TV平台
UNITY_XBOXONE Xbox One 平台
UNITY_TIZEN Tizen 平台
UNITY_TVOS Apple TV 平台
UNITY_WSA #define directive for Universal Windows Platform. Additionally, NETFX_CORE is defined when compiling C# files against .NET Core and using .NET scripting backend.
UNITY_WSA_10_0 #define directive for Universal Windows Platform. Additionally WINDOWS_UWP is defined when compiling C# files against .NET Core.
UNITY_WINRT UNITY_WSA.
UNITY_WINRT_10_0 UNITY_WSA_10_0
UNITY_WEBGL #define directive for WebGL.
UNITY_FACEBOOK faceBook平台(WebGL or Windows standalone).
UNITY_ADS 调用广告方法,版本 5.2 以后
UNITY_ANALYTICS 调用unity分析服务,版本5.2以后
UNITY_ASSERTIONS 控制指令的过程
Unity版本判定方式:UNITY_X,UNITY_X_Y,UNITY_X_Y_Z 例如:
UNITY_5 unity5版本, 包含所有的5.x.y版本
UNITY_5_0 Unity5.0版本,包含所有的5.0.x版本
UNITY_5_0_1 Unity5.0.1版本
打包的时候,选择 File > Build Settings然后显示平台选择界面 .
1、UNITY_EDITOR Unity编辑器中调用
UNITY_EDITOR_WIN windows操作系统的编辑器
2、UNITY_ANDROID 安卓平台
3、UNITY_IPHONE 苹果平台。
4、UNITY_STANDALONE 独立的平台(Mac,Windows或Linux)
UNITY_STANDALONE_OSX Mac OS
UNITY_STANDALONE_WIN Windows 操作系统
UNITY_STANDALONE_LINUX Linux
5、UNITY_WEBPLAYER 网页播放器 新版untiy 已经放弃这个平台
6、UNITY_WEBGL WEBGL平台
7、UNITY_SWITCH Switch平台
8、UNITY_FLASH Adobe Flash
注意点:
1 如上方4中 如果只写
#if UNITY_STANDALONE #endif
代码将会在 mac windows linux上都生效
2 使用vs时,只有符合当前平台的代买才会显示正常的颜色,非当前平台的代码将显示灰色,这些代码将在部署到目标平台后生效
标签:定义,STANDALONE,Windows,平台,UNITY,Unity,EDITOR From: https://www.cnblogs.com/guangzhiruijie/p/16627468.html