Unity中的平台预处理器指令
在开发中,特别是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_PS3Platform define for running PlayStation 3 code.
UNITY_XBOX360Platform 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平台";windows开发平台
#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_6Platform define for the major version of Unity 2.6.
UNITY_2_6_1Platform define for specific version 1 from the major release 2.6.
UNITY_3_0Platform define for the major version of Unity 3.0.
UNITY_3_0_0Platform define for the specific version 0 of Unity 3.0.
UNITY_3_1Platform define for major version of Unity 3.1.
UNITY_3_2Platform define for major version of Unity 3.2.
UNITY_3_3Platform define for major version of Unity 3.3.
UNITY_3_4Platform define for major version of Unity 3.4.
UNITY_3_5Platform define for major version of Unity 3.5.
UNITY_4_0Platform define for major version of Unity 4.0.
UNITY_4_0_1Platform define for major version of Unity 4.0.1.
UNITY_4_1Platform define for major version of Unity 4.1.
UNITY_4_2Platform define for major version of Unity 4.2.
其实预编译在我们对unity开发的时候还有⼀个很好的作⽤,我们Debug的时候是IO,其实会消耗CPU的,从⽽影响了我们的性能,我们想在开发的时候进⾏Debug,但不想在到处的时候打印出,在这个时候我们就可以⽤预编译来预处理命令从来不会被翻译为可执⾏中的命令,但会影响编译过程的各个
⽅⾯。例如:使⽤预处理器指令可以禁⽌编译器编译代码的某⼀部分,如果计划发布两个版本的代码,即基本版本和有更多功能的企业版本,即可以使⽤这
如果对预编译不熟的同学可以去百度,或者⾕歌下,我也是在查阅后才明⽩的!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论