Unity 区分不同平台
问题:公司开发的游戏实在android平台上运行,但是我们是在windows平台下进行开发,OK ,经常有些地方开发完之后就要换到android上面,能区分平台的不同就可以对代码做区分处理
回答:unity可以在编译的时候通过提供的变量来进行判断,下面为转载内容,地址:
当制作跨平台游戏时,虽然Unity已经相当方便了,但因为各平台间的效能及功能差异,我们常常需要附加专用的程式码来做一些处理,尽管Unity的API已经有Application.platform来让我们进行判断,但有些RuntimeClasses在不适用的平台Bulid时会回报错误,像是iPhoneSettings或是iPhoneKeyboard在Bulid成PC平台游戏时就会直接报错而无法Bulid。
另外,当Unity有新版本发行,在Script的语法上也可能做些变动,像是近期的3.4,官方的更新详细内容说明页面上就有提到对于Javascript的变动,也有提醒旧有程式可能在更新到新版Unity後可能会报错,此时,我们就必须自行调整程式内容,才能使游戏正常运作。
基于这些在编译时就会发生的错误,即使我们在程式中加入Application.platform或Application.unityVersion来判断执行平台或Unity版本,也没多大帮助,所以只好在不同平台编译时将暂时不能用的程式区段注解起来,以免发生错误,但是这种做法实在是不方便,特别是当程式越写越多时,出问题的机会就更大了;幸好,Unity在2.6及3.0之後分别为版本及平台提供了解决之道,所以我们只要为不同平台或Unity版本都撰写专用的程式码,然後利用#if、#else及#endif将这些程式码区隔开来,那么编译时就只会去编辑到需要的部份,可以直接排除这一类编译期发生的错误。
用来判断平台的常数有:
UNITY_EDITOR
UNITY_STANDALONE_OSX
UNITY_DASHBOARD_WIDGET
UNITY_STANDALONE_WIN
UNITY_WEBPLAYER
UNITY_WII
UNITY_IPHONE
UNITY_ANDROID
UNITY_PS3
UNITY_XBOX360
在 Unity 编辑器中,这些常数就已是有效用的,而不用等到输出时才会生效,例如在 Build Settings 中是将平台切换到 Web Player ,此时虽然未将游戏输出,在程式码中判断为 UNITY_WEBPLAYER 可执行的区域就会被编译,如此也大大增加了制作时期的便利性。
用来判断版本的常数则有:
UNITY_2_6
UNITY_2_6_1
UNITY_3_0
UNITY_3_0_0
UNITY_3_1
UNITY_3_2
UNITY_3_3
UNITY_3_4
* 版权声明:转载时请以超链接形式标明文章原始出处和作者信息
* 本文来自:Unity3D 教程手册
* 本文链接:http://www.unitymanual.com/4226.html
Unity 区分不同平台的更多相关文章
- Unity中各个平台的预编译的运用方式
1,unity中官方文档的一个操纵关键词 Platform Dependent Compilation 2,常用的预编译关键词 UNITY_EDITOR 编辑器调用.UNITY_STA ...
- Unity开发 手机平台播放影片
http://www.cnblogs.com/zhaoqingqing/p/3401747.html 截止到目前的Unity4.2版本,要在手机平台上播放影片,有两种方法: 使用Unity自带的Mov ...
- 关于Unity发布iOS平台代码混淆问题
之前在越狱手机里找到<永恒战士3>的程序发现是用Unity做的,拷出资源出来看的时候发现里面有游戏程序集,立马抽出来反编译了一下,发现里面的代码只有方法签名,没有方法体,还以为用什么高端混 ...
- Platform区分不同平台
用于区分平台 OS 属性 表示当前的平台类型.只有 ios 与 android 两个值.如可以使用为同一个属性在不同的平台上赋不同的值 const styles = StyleSheet.create ...
- Unity打包Android平台AssetBundle脚本
注意,BuildTarget tagetPlatform参数为BuildTarget.Android using UnityEngine; using UnityEditor; public clas ...
- Unity发布各平台路径
#if UNITY_EDITOR string filepath = Application.dataPath + "/StreamingAssets"; #elif UNITY_ ...
- unity macro 分平台处理
https://docs.unity3d.com/ScriptReference/SystemInfo.html https://docs.unity3d.com/Manual/PlatformDep ...
- [Unity基础]移动平台下的文件读写
From:http://blog.csdn.net/lyh916/article/details/52161633 参考链接: http://www.cnblogs.com/murongxiaopif ...
- unity区分点击在3D物体还是2D UI上
当场景中的3D物体需要响应点击,但同时有UI显示时,存在判断点击是在3D物体上还是UI上的问题,办法如下: 1. 射线检测所有2D 3D物体,有2D物体被检测到时表明当前有UI.但无论Physics2 ...
随机推荐
- mysql中char,varchar,text区别总结
具体对这三种类型的说明不做阐述可以查看mysql帮助文档. char的总结: char最大长度是255字符,注意是字符数和字符集没关系.可以有默认值,尾部有空格会被截断.varchar的总结 ...
- .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)
1.自动属性 Auto-Implemented Properties 2.隐式类型 var var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...
- duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口
BUG造成的影响 继承自WindowImplBase的窗口类, 如果没有重写重写ResponseDefaultKeyEvent而由WindowImplBase默认处理的话, 会导致按一次有ESC键, ...
- LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]
1.首先实现一个interceptor,在请求开始的时候MDC put一个Session标志,interceptor结束的时候remove掉 import javax.servlet.http.H ...
- 小甲鱼PE详解之区块表(节表)和区块(节)(PE详解04)
到此为止,小甲鱼和大家已经学了许多关于 DOS header 和 PE header 的知识.接下来就该轮到SectionTable (区块表,也成节表).(视频教程:http://fishc.com ...
- android去掉标题栏
在AndroidManifest.xml修改 把 <applicationandroid:allowBackup="true"android:icon="@draw ...
- 多功能扫描打印读卡一体手持POS终端
以往便利店或者超市,前台那个笨重的POS机和站在POS机后的收银员.传统的零售店中,笨重的POS机随处可见. 一个顾客要结账,就需要通过POS机.小票打印机.刷卡器等的配合才能实现.店面需要盘点,整理 ...
- Logback常用配置详解
logback是一套日志框架,由log4j的优化版,由同一个作者开发,在速度和性能上都超过其他日志框架,再结合slf4j,已成为当前最流行的日志框架. Logback最常用就是在classpath定义 ...
- fork和execve
fork函数在新的子进程中运行相同的程序,新的子进程是父进程的一个复制品. execve函数在当前进程的上下文中加载并运行一个新的程序.它会覆盖当前进程的地址空间,但并没有创建一个新的进程.新的程序仍 ...
- 【BZOJ】1468: Tree(点分治)
http://www.lydsy.com/JudgeOnline/problem.php?id=1468 分治真是一门高大上的东西... 好神... 树分治最好资料是:qzc的<分治算法在树的路 ...