Unity中的宏定义
有时候我们需要使用区分不同平台来实现不同的逻辑,这个时候就用到宏定义了
基本语法
1 2 3 4 | #if UNITY_EDITOR_WIN ||UNITY_STANDALONE #elif UNITY_ANDROID #else #endif |
宏定义可以直接写在类中,也可以写在方法体中,工作方式和普通if else完全一致
以下为常用定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // 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 } } |
1 2 3 4 5 6 7 8 9 10 11 | #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中 如果只写
1 2 | #if UNITY_STANDALONE #endif |
代码将会在 mac windows linux上都生效
2 使用vs时,只有符合当前平台的代买才会显示正常的颜色,非当前平台的代码将显示灰色,这些代码将在部署到目标平台后生效
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!