Unity 預處理命令


我們經常在代碼里面寫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


    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM