首页 > 其他分享 >Unity中的宏定义

Unity中的宏定义

时间:2022-08-26 14:34:48浏览次数:82  
标签:定义 STANDALONE Windows 平台 UNITY Unity EDITOR

有时候我们需要使用区分不同平台来实现不同的逻辑,这个时候就用到宏定义
基本语法

#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

相关文章

  • UnityEditor Undo
    最重要的几项操作如下所述:修改单个属性:Undo.RecordObject(myGameObject.transform,"ZeroTransformPosition");myGameObject.transform.position=Vector3.zero;......
  • 使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼
    作者:谱一段风华笔墨什么是函数计算阿里云函数计算FC是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准......
  • 在uniapp目录下的uni_module中创建自定义组件
    一、前言  在使用uni-app框架时,可能里面的内置组件和扩展组件都不是我们想要的,或者不能满足我们的需求,这时就必须得创建自定义组件了,在低版本的HbuilderX中所有的组......
  • 注解-JDK内置注解以及自定义注解-格式&本质
    JDK内置注解JDK中预定义的一些注解:1,@Override-检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。2,@Deprecated-标记过时方......
  • arduino自定义库c与c++的区别
    起初是想把手头的红牛开发板的基于stm32标准库的例子都改成用arduino库的   发现arduino库是基于hal库的 不是直接把c文件挪过来就能用的arduino是c++编译器 如......
  • C++入门第一课 函数声明与定义
    函数的声明:如:voidLog(constchar*message);1,在C++中,函数原型就是函数的声明。函数声明就是给函数取名并指定函数的参数类型,返回值类型。告诉编译器有这么一个可使用的......
  • zabbix自定义监控
    zabbix深入自定义监控zabbix多条件触发监控内存可用的百分比UserParameter=mem.available,free-m|awk'NR==2{print$NF/$2*100}'目前属于单条件触发器,因为内存低......
  • Android学习笔记五(JAVA):创建新的Activity,启动新的Activity,管理任务之定义启动模式,从
    本篇笔记给QuizDemo新增一个HelpActivity,用户点击Help按钮,会跳转到HelpActivity屏幕,并选择是否查看答案。查看答案之后,返回到答题屏幕,但是如果已经看了答案,这一题的作答就......
  • SQL学习——数据库定义语言(DDL)定义约束
    本章将介绍数据库中的约束是什么,如何给表之间建立约束。1、约束类型介绍主要有5中约束,包括:非空约束(NOTNULL):指定列不能包含空值唯一性约束(UNIQUE):指定列或者列......
  • 自定义设置Windows右键新建菜单的方法
    win+r,regedit计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNewHKEY_CURRENT_USER\Software\Microsoft......