Unity 預編譯相關宏定義 (如:UNITY_EDITOR)-Unity3D判斷所在平臺

簡介

Unity包含一個稱爲Platform Dependent Compilation的功能。這包含一些預處理器指令,可讓您對腳本進行分區,以便爲受支持的平臺之一專門編譯和執行一段代碼。

你可以在Unity編輯器中運行這個代碼,這樣你就可以專門爲你的目標平臺編譯代碼並在編輯器中測試它!

平臺#define指令

Unity支持腳本的平臺#define指令如下:

屬性: 功能:
UNITY_EDITOR #define指令,用於從遊戲代碼中調用Unity編輯器腳本。
UNITY_EDITOR_WIN Windows上的編輯器代碼的#define指令。
UNITY_EDITOR_OSX #define指令,用於Mac OS X上的編輯器代碼。
UNITY_STANDALONE_OSX #define指令,用於專門針對Mac OS X(包括Universal,PPC和Intel體系結構)編譯/執行代碼。
UNITY_STANDALONE_WIN #define指令,用於專門爲Windows獨立應用程序編譯/執行代碼。
UNITY_STANDALONE_LINUX #define指令,用於專門爲Linux獨立應用程序編譯/執行代碼。
UNITY_STANDALONE #define指令,用於爲任何獨立平臺(Mac OS X,Windows或Linux)編譯/執行代碼。
UNITY_WII #define指令,用於爲Wii控制檯編譯/執行代碼。
UNITY_IOS #define指令,用於爲iOS平臺編譯/執行代碼。
UNITY_IPHONE 不推薦使用。請改用UNITY_IOS
UNITY_ANDROID 適用於Android平臺的#define指令。
UNITY_PS4 #define運行指令 的PlayStation 4碼。
UNITY_XBOXONE #define指令執行 Xbox One碼。
UNITY_TIZEN Tizen平臺的#define指令。
UNITY_TVOS 適用於Apple TV平臺的#define指令。
UNITY_WSA

#define指令用於 通用Windows平臺

此外,當針對.NET Core和使用.NET編譯C#文件時,將定義NETFX_CORE。腳本後端

UNITY_WSA_10_0 適用於通用Windows平臺的#define指令。此外,針對.NET Core編譯C#文件時,還定義WINDOWS_UWP
UNITY_WINRT UNITY_WSA相同。
UNITY_WINRT_10_0 相當於UNITY_WSA_10_0
UNITY_WEBGL #define指令用於 WebGL
UNITY_FACEBOOK 適用於Facebook平臺(WebGL或Windows獨立)的#define指令。
UNITY_ADS #define指令,用於從遊戲代碼中調用Unity Ads方法。5.2及更高版本。
UNITY_ANALYTICS #define指令,用於調用Unity 分析工具 遊戲代碼中的方法。5.2及更高版本。
UNITY_ASSERTIONS #define指令用於斷言控制過程。

測試用例

JS測試代碼如下:

// JS
function Awake() {
  #if UNITY_EDITOR
    Debug.Log(" --- Unity Editor");
  #endif
    
  #if UNITY_IPHONE
    Debug.Log(" --- Iphone");
  #endif
 
  #if UNITY_STANDALONE_OSX
    Debug.Log(" --- Stand Alone OSX");
  #endif
 
  #if UNITY_STANDALONE_WIN
    Debug.Log(" --- Stand Alone Windows");
  #endif    
}

C#測測試代碼如下:

// 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
  }          
}

官網的文檔鏈接和截圖

https://docs.unity3d.com/2019.1/Documentation/Manual/PlatformDependentCompilation.html

Unity 宏定義查找
Unity 預編譯相關宏定義

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章