在开发中,特别是unity的跨平台中,我们常常会在各个平台游走,如安卓版,苹果版,PC版......。在此不同的平台上,有可能我们须要做不同的操作。然而我们就能够用unity的自带的平台宏定义方式来做平台的推断。Unity帮我们定义了例如以下平台预处理:
 
|  名称 | 
 描写叙述 | 
 
| 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. | 
 
 
 | 
  | 
 
 
   以后我们能够依据如上宏定义就能够去轻而易举的非常easy去在我们代码中增加推断了。我举个简单样例,例如以下:
- using UnityEngine;  
 
- using System.Collections;  
 
-   
 
- public class Recompile : MonoBehaviour  
 
- {  
 
-   
 
-     private string platform = string.Empty;  
 
-     
 
-     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状态下的话,就能看见打印出:     
 
我们也能够自定义宏定义,在PlayerSetting中定义:

 
比如我在上面圈起来的地方填写一个CUSTOM_ITF这个预编译指令。然后在DebugPlatformMesaage函数尾部增加这句话
- #if CUSTOM_ITF  
 
-         customMsg = "我自己定义了预编译";  
 
- #endif  
 
-         Debug.Log(customMsg);  
 
 
 
然后我们执行看下,你就能在控制台看见我们输出的信息了:

 
    当我们把我们自己定义的宏定义给去掉的时候,我们打印的信息就不会出来。
 
除了这些,unity中还有各个版本号的宏定义,一般开发插件的大牛都会用到。
 
| 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多平台预处理
原文:http://www.cnblogs.com/monkeyst/p/7551141.html