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 } }
如果你感兴趣,你可以把你妹妹介绍给我