unity平台的预处理
unity平台的预处理
在开发中,特别是unity的跨平台中,我们经常会在各个平台游走,如安卓版,苹果版,PC版......。在此不同的平台上,有可能我们需要做不同的操作。然而我们就可以用unity的自带的平台宏定义方式来做平台的判断。Unity帮我们定义了如下平台预处理:
|
以后我们可以根据如上宏定义就可以去轻而易举的很容易去在我们代码中加入判断了。我举个简单例子,如下:
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状态下的话,就能看见打印出: 
我们也可以自己定义宏定义,在PlayerSetting中定义:

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

当我们把我们自定义的宏定义给去掉的时候,我们打印的信息就不会出来。
除了这些,unity中还有各个版本的宏定义,一般开发插件的大牛都会用到。
|
其实预编译在我们对unity开发的时候还有一个很好的作用,我们Debug的时候是IO,其实会消耗CPU的,从而影响了我们的性能,我们想在开发的时候进行Debug,但不想在到处的时候打印出,在这个时候我们就可以用预编译来判断他是否是在Editor状态下,从而做出相应的操作!
预处理命令从来不会被翻译为可执行中的命令,但会影响编译过程的各个方面。例如:使用预处理器指令可以禁止编译器编译代码的某一部分,如果计划发布两个版本的代码,即基本版本和有更多功能的企业版本,即可以使用这些预处理指令。在编译软件的基本版本时,使用预处理器指令还可以禁止编译器编译于额外相关的代码。另外,在编写提供调试信息的代码时,也可以使用预处理器指令。在销售软件时,一般不希望编译这部分代码。预处理器指令开头都有符号#。我们unity的不是分专业版和免费版吗,其实有可能就是用到了预编译,从而编译不同的版本。 如果对预编译不熟的同学可以去百度,或者谷歌下,我也是在查阅后才明白的!
unity平台的预处理的更多相关文章
- [unity3d]unity平台的预处理
在开发中,特别是unity的跨平台中,我们常常会在各个平台游走,如安卓版,苹果版,PC版.......在此不同的平台上,有可能我们须要做不同的操作.然而我们就能够用unity的自带的平台宏定义方式来做 ...
- Unity 平台依赖编译
位置:unity文档-Manual-Scripting-Platform dependent compilation Property: Function: UNITY_EDITOR #define ...
- Unity 平台宏定义
官方文档: https://docs.unity3d.com/Manual/PlatformDependentCompilation.html
- Unity 3D游戏开发引擎:最火的插件推荐
摘要:为了帮助使用Unity引擎的开发人员制作更完美的游戏.我们精心挑选了十款相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJ ...
- Unity开发之实现更换鼠标图片
在玩游戏的时候,感觉游戏里的鼠标图片特酷炫,23333,今天我就总结了两种方法! 我是做Unity开发的,所以方法仅针对于Unity平台........ 方法如下: 1.Unity客户端直接更改,步骤 ...
- Unity摄像机围绕物体旋转两种实现方式
第一种,使用Transform 函数 RotateAround. 代码如下: public Transform target;//获取旋转目标 private void camerarotate() ...
- Unity 下集成第三方原生 SDK,以极光厂商通道为例
Unity中集成三方SDK有两种方式: Unity 项目开发中时常有集成 Android 第三方 SDK 的需求,比如接入第三方推送,分享等功能.而第三方 SDK 的集成文档提到的往往是基于原生 An ...
- Unity Editor Console Pro 扩展点击定位到外部工程
链接 http://blog.csdn.net/akof1314/article/details/53232981 http://forum.china.unity3d.com/thread-2689 ...
- Unity插件
1.2D Toolkit 如果过去你一直从事3D游戏开发,最近想转做2D游戏,最好尝试一下2D Toolkit.2D Toolkit是一款2D开发组件,它具有很强的灵活性和适应性,能够让开发者在Uni ...
随机推荐
- html标签中meta属性使用介绍
前言 meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用 ...
- python学习笔记之类class(第六天)
参考文档: 1.金角大王博客:http://www.cnblogs.com/alex3714/articles/5188179.html ...
- jQuery晦涩的底层工具方法们
这里整理的是jQuery源码中一些比较晦涩难懂的.内部的.最底层的工具方法,它们多为jQuery的上层api方法服务,目前包括: jQuery.access jQuery.access: functi ...
- C语言 05 数组
数组作为函数参数,可以省略元素个数. 数组作为函数参数,传递是整个数组的地址,修改函数形参数组的值,会影响到外面的 实参数组. 基本数据类型作为函数参数,传递是数值.
- dr.wondr博士随笔之某古旧非智能机T6XXX 恢复一例
大家好!欢迎再次来到dr.Wonde的微博! 今次我给大家带来索尼爱立信古董机T650i的取证工作展示! 首先请出今天我们的主角索尼爱立信 T650i>> 然后在工厂模式下,连接设备,看图 ...
- 【单点登录】【两种单点登录类型:SSO/CAS、相同一级域名的SSO】
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
- Thinkphp回顾之(四)查询方法深入学习
本次讲的查询方法主要有:表达式查询,模糊查询,between语句,in语句,区间查询,统计数据,普通方式查询,但大多数都只是引入数组而已,明白了第一个,其他的也就差不多全明白了,唯一要注意的是在后台中 ...
- Android 图形总结
1.9patch图 2.按钮自定义 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:a ...
- C#获得类的方法和方法参数
Type t = typeof(CommonController); StringBuilder str = new StringBuilder(); MethodInfo[] methors = t ...
- Xmemcached的FAQ和性能调整建议
转载 http://www.blogjava.net/killme2008/archive/2014/02/13/325564.html 一.XMemcached是什么?经常碰到的一个问题是很多朋友对 ...