我们经常在代码里面写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 } }

Unity 预处理命令的更多相关文章

  1. IOS使用C#预处理命令,多种SDK共存

    当我们使用Unity接 91,XY助手等等SDK时候. 我们需要使用[DllImport("__Internal")] 来声明一个C++的方法调用. 不同的SDK总会有不同的方法. ...

  2. 预处理命令[#define]说明

    宏定义 宏定义是对一些常见的变量.字符串等进行定义,被定义的数据在编译会进行自动替换.有时一些变量或字符串被多次使用,当需要修改时,就需要对源文件中它们出现的地方一一修改,效率比较低,而通过宏定义,只 ...

  3. 【C语言入门教程】2.8 C 语言的预处理命令

    预处理命令是在程序编译阶段进行执行的命令,用于编译与特定环境相关的可执行文件.预处理命令扩展了 C 语言,本节将选择其中一些常用的预处理命令进行讲解. 2.8.1 宏替换命令 宏替换命令的作用类似于对 ...

  4. 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出

    [源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...

  5. 编译预处理命令--define和ifdef的使用

    这里将对常用的预处理命令进行学习. 一.宏定义  ·defined 格式:`defined     宏名      数值 或者 `define      宏名 注意:后面没有‘;‘,和单片机不一样: ...

  6. C++基础之预处理命令

    目录 概述——对预处理命令的理解 预处理命令的处理时间 C++中主要的预处理命令 宏定义 “文件包含”处理 选择编译 概述 使用C++的预处理命令可以提高程序的可维护性,有利于程序员以更加方便和快捷的 ...

  7. C/C++编译预处理命令详解【转】

    1.       预处理程序  按照ANSI标准的定义,预处理程序应该处理以下指令: #if #ifdef #ifndef #else #elif #endif #define #undef #lin ...

  8. 预处理命令#define #undef #if #endif 的基本用法

    C#的预处理命令其实还是蛮有用的,但是真正使用过得人不多,这个介绍一下平时用的比较多的预处理命令中的几个:#define,#undef ,#if,#endif.除此之外还有一些预处理命令#warnin ...

  9. c# 预处理命令

    在编译之前进行的处理. 预处理命令以符号“#”开头. #define 只能 定义符号 不能定义宏(#define PI 3.14 这是错的,在c#中没宏) #region #endregion #if ...

随机推荐

  1. <% %> 、 <%= %> 、<%# %> 的区别

    1,<% %>用来绑定后台代码    中间一般放函数或者方法,典型的asp程序写法. 在前台页面可以写后台代码                 相当于开辟了C#空间,可以写C#代码 2,& ...

  2. Hibernate(二)——POJO对象的操作

    POJO对象其实就是我们的实体,这篇博客总结一下框架对POJO对象对应数据库主键的生成策略,和一些对POJO对象的简单增删改查的操作.  一,Hibernate框架中主键的生成策略有三种方式: 1,数 ...

  3. 连数据库是ODBC好还是OLEDB好

    1.连数据库是ODBC好还是OLEDB好?2.是不是只有微软的数据库才可以用OLEDB?3.要切换这两种连接,是不是只需要修改连接字符串?谢谢大家了,小弟对这三个问题不解 分享到:   2009-03 ...

  4. Unity 启动画面淡入淡出

    前几天在玩我叫MT 2游戏的时候发现打开他们应用的时候发现他们Logo淡入淡出的效果做的挺好的,例如第一张是运营商腾讯的logo第二张是他们公司的游戏logo.我们也来模仿一下: 第一张图片:运营商的 ...

  5. stagefright omx小结

    由于stagefright和openmax运行在两个不同的进程上,所以他们之间的通讯要经过Binder进行处理,本小结不考虑音频这一块,假设视频为MP4封装的AVC编码文件. 先简单的看一下stage ...

  6. js简单排序

    简单的排序功能 HTML代码: <body> <input id="btn1" type="button" value="排序&qu ...

  7. 使用react-native做一个简单的应用-05 navigator的使用

    今天生病了,难受... Navigator顾名思义就是导航器的意思. 在Android和iOS中,导航器的样式是不一样的 ,有一个比较好的网址可以提供大家学习(网址),由于样式的不统一,于是我决定自己 ...

  8. 写一个Windows上的守护进程(5)文件系统重定向

    写一个Windows上的守护进程(5)文件系统重定向 在Windows上经常操作文件或注册表的同学可能知道,有"文件系统/注册表重定向"这么一回事.大致来说就是32位程序在64位的 ...

  9. c中关于#与##的简易使用

    #运算符用于在预编译时,将宏参数转换为字符串 eg. #include <stdio.h>#define CONVERT(f)(#f) void helloworld(){ printf( ...

  10. (原)ubuntu上安装nvidia及torch的nccl

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5717234.html 参考网址: https://github.com/NVIDIA/nccl htt ...