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时,只有符合当前平台的代买才会显示正常的颜色,非当前平台的代码将显示灰色,这些代码将在部署到目标平台后生效

posted @   多见多闻  阅读(1147)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示