您好,登錄后才能下訂單哦!
在開發(fā)中,特別是unity的跨平臺中,我們經(jīng)常會在各個平臺游走,如安卓版,蘋果版,PC版......。在此不同的平臺上,有可能我們需要做不同的操作。然而我們就可以用unity的自帶的平臺宏定義方式來做平臺的判斷。Unity幫我們定義了如下平臺預(yù)處理:
|
以后我們可以根據(jù)如上宏定義就可以去輕而易舉的很容易去在我們代碼中加入判斷了。我舉個簡單例子,如下:
using UnityEngine; using System.Collections; public class Recompile : MonoBehaviour { private string platform = string.Empty; // Use this for initialization void Start() { DebugPlatformMesaage(); } void DebugPlatformMesaage() { #if UNITY_EDITOR platform = "hi,大家好,我是在unity編輯模式下"; #elif UNITY_XBOX360 platform="hi,大家好,我在XBOX360平臺"; #elif UNITY_IPHONE platform="hi,大家好,我是IPHONE平臺"; #elif UNITY_ANDROID platform="hi,大家好,我是ANDROID平臺"; #elif UNITY_STANDALONE_OSX platform="hi,大家好,我是OSX平臺"; #elif UNITY_STANDALONE_WIN platform="hi,大家好,我是Windows平臺"; #endif Debug.Log("Current Platform:" + platform); } }
上面如果我是在Editor狀態(tài)下的話,就能看見打印出:
我們也可以自己定義宏定義,在PlayerSetting中定義:
例如我在上面圈起來的地方填寫一個CUSTOM_ITF這個預(yù)編譯指令。然后在DebugPlatformMesaage函數(shù)尾部加入這句話
//新添加的內(nèi)容 #if CUSTOM_ITF customMsg = "我自定義了預(yù)編譯"; #endif Debug.Log(customMsg);
然后我們運(yùn)行看下,你就能在控制臺看見我們輸出的信息了:
當(dāng)我們把我們自定義的宏定義給去掉的時候,我們打印的信息就不會出來。
除了這些,unity中還有各個版本的宏定義,一般開發(fā)插件的大牛都會用到。
|
其實(shí)預(yù)編譯在我們對unity開發(fā)的時候還有一個很好的作用,我們Debug的時候是IO,其實(shí)會消耗CPU的,從而影響了我們的性能,我們想在開發(fā)的時候進(jìn)行Debug,但不想在到處的時候打印出,在這個時候我們就可以用預(yù)編譯來判斷他是否是在Editor狀態(tài)下,從而做出相應(yīng)的操作!
預(yù)處理命令從來不會被翻譯為可執(zhí)行中的命令,但會影響編譯過程的各個方面。例如:使用預(yù)處理器指令可以禁止編譯器編譯代碼的某一部分,如果計(jì)劃發(fā)布兩個版本的代碼,即基本版本和有更多功能的企業(yè)版本,即可以使用這些預(yù)處理指令。在編譯軟件的基本版本時,使用預(yù)處理器指令還可以禁止編譯器編譯于額外相關(guān)的代碼。另外,在編寫提供調(diào)試信息的代碼時,也可以使用預(yù)處理器指令。在銷售軟件時,一般不希望編譯這部分代碼。預(yù)處理器指令開頭都有符號#。我們unity的不是分專業(yè)版和免費(fèi)版嗎,其實(shí)有可能就是用到了預(yù)編譯,從而編譯不同的版本。
如果對預(yù)編譯不熟的同學(xué)可以去百度,或者谷歌下,我也是在查閱后才明白的!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。