在開發(fā)中,特別是unity的跨平臺中,我們經常會在各個平臺游走,如安卓版,蘋果版,PC版......。在此不同的平臺上,有可能我們需要做不同的操作。然而我們就可以用unity的自帶的平臺宏定義方式來做平臺的判斷。Unity幫我們定義了如下平臺預處理:
創(chuàng)新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、網站設計、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的
西充網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
名稱 | 描述 | UNITY_EDITOR | Define for calling Unity Editor scripts from your game code. | UNITY_STANDALONE_OSX | Platform define for compiling/executing code specifically for Mac OS (This includes Universal, PPC and Intel architectures). | UNITY_DASHBOARD_WIDGET | Platform define when creating code for Mac OS dashboard widgets. | UNITY_STANDALONE_WIN | Use this when you want to compile/execute code for Windows stand alone applications. | UNITY_STANDALONE_LINUX | Use this when you want to compile/execute code for Linux stand alone applications. | UNITY_STANDALONE | Use this to compile/execute code for any standalone platform (Mac, Windows or Linux). | UNITY_WEBPLAYER | Platform define for web player content (this includes Windows and Mac Web player executables). | UNITY_WII | Platform define for compiling/executing code for the Wii console. | UNITY_IPHONE | Platform define for compiling/executing code for the iPhone platform. | UNITY_ANDROID | Platform define for the Android platform. | UNITY_PS3 | Platform define for running PlayStation 3 code. | UNITY_XBOX360 | Platform define for executing Xbox 360 code. | UNITY_NACL | Platform define when compiling code for Google native client (this will be set additionally to UNITY_WEBPLAYER). | UNITY_FLASH | Platform define when compiling code for Adobe Flash. |
| |
以后我們可以根據如上宏定義就可以去輕而易舉的很容易去在我們代碼中加入判斷了。我舉個簡單例子,如下:
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這個預編譯指令。然后在DebugPlatformMesaage函數尾部加入這句話
//新添加的內容 #if CUSTOM_ITF customMsg = "我自定義了預編譯"; #endif Debug.Log(customMsg);
然后我們運行看下,你就能在控制臺看見我們輸出的信息了:
當我們把我們自定義的宏定義給去掉的時候,我們打印的信息就不會出來。
除了這些,unity中還有各個版本的宏定義,一般開發(fā)插件的大牛都會用到。
UNITY_2_6 | Platform define for the major version of Unity 2.6. | UNITY_2_6_1 | Platform define for specific version 1 from the major release 2.6. | UNITY_3_0 | Platform define for the major version of Unity 3.0. | UNITY_3_0_0 | Platform define for the specific version 0 of Unity 3.0. | UNITY_3_1 | Platform define for major version of Unity 3.1. | UNITY_3_2 | Platform define for major version of Unity 3.2. | UNITY_3_3 | Platform define for major version of Unity 3.3. | UNITY_3_4 | Platform define for major version of Unity 3.4. | UNITY_3_5 | Platform define for major version of Unity 3.5. | UNITY_4_0 | Platform define for major version of Unity 4.0. | UNITY_4_0_1 | Platform define for major version of Unity 4.0.1. | UNITY_4_1 | Platform define for major version of Unity 4.1. | UNITY_4_2 | Platform define for major version of Unity 4.2. |
| |
其實預編譯在我們對unity開發(fā)的時候還有一個很好的作用,我們Debug的時候是IO,其實會消耗CPU的,從而影響了我們的性能,我們想在開發(fā)的時候進行Debug,但不想在到處的時候打印出,在這個時候我們就可以用預編譯來判斷他是否是在Editor狀態(tài)下,從而做出相應的操作!
預處理命令從來不會被翻譯為可執(zhí)行中的命令,但會影響編譯過程的各個方面。例如:使用預處理器指令可以禁止編譯器編譯代碼的某一部分,如果計劃發(fā)布兩個版本的代碼,即基本版本和有更多功能的企業(yè)版本,即可以使用這些預處理指令。在編譯軟件的基本版本時,使用預處理器指令還可以禁止編譯器編譯于額外相關的代碼。另外,在編寫提供調試信息的代碼時,也可以使用預處理器指令。在銷售軟件時,一般不希望編譯這部分代碼。預處理器指令開頭都有符號#。我們unity的不是分專業(yè)版和免費版嗎,其實有可能就是用到了預編譯,從而編譯不同的版本。
如果對預編譯不熟的同學可以去百度,或者谷歌下,我也是在查閱后才明白的!
另外有需要云服務器可以了解下創(chuàng)新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享名稱:[unity3d]unity平臺的預處理-創(chuàng)新互聯
網站路徑:
http://weahome.cn/article/ddjeei.html