我們經常在代碼里面寫Debug.Log()調試代碼,游戲后門代碼.這些代碼在發布時無意義的,我們就需要慢慢的刪除掉它們(很痛苦),有什么辦法讓它們在編譯的時候並不加入編譯代碼中呢? 預處理命令..比如游戲准備發布電腦和安卓分別控制角色鼠標移動,雙手控制移動並不需要復制兩份項目分別開發,可以使用預處理命令進行分開編程!
下面介紹幾個常用的預處理命令:
UNITY_EDITOR 只在編輯器中編譯
UNITY_ANDROID 只在安卓下編譯
UNITY_STANDALONE_OSX 只在蘋果下編譯
關於UNITY版本預處理命令, 我們常常看見NGUI插件根據UNITY版本不同,組件在Inspector視圖下顯示也不同
UNITY_2_6,
UNITY_2_6_1,
UNITY_3_5等等:
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { void Start() { #if UNITY_EDITOR Debug.Log("只在編輯器中輸出"); #endif #if UNITY_ANDROID Debug.Log("Android平台中輸出"); //你定義的方法也在這里面,編輯器也不會幫你智能提示的 #elif UNITY_STANDALONE_OSX Debug.Log("OSX平台中輸出"); #endif //不在Unity編輯器,IOS和android系統上面 #if (UNITY_ios || UNITY_ANDROID) Debug.Log("IOS 和 安卓上面"); #else #endif } }
二、Unity定義全局的宏
下面演示定義A和B兩個宏.每一個類文件都可以判斷這兩個宏
如果你使用的Visual Studio編輯器,那么也可以在項目中定義全局宏

代碼實現
#define D using UnityEngine; using System.Collections; public class Demo : MonoBehaviour { // Use this for initialization void Start () { #if A Debug.Log("A"); #endif #if B Debug.Log("B"); #endif #if C Debug.Log("C"); //宏沒有定義顯示灰色 #endif #if D Debug.Log("D"); //類文件頭部定義了D #endif } }
