zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    解释*args和**kwargs的含义
    字典推导式创建字典
    返回json格式数据乱码
    DataTables warning: table id=data-table
    echart折线图,柱状图,饼图设置颜色
    No mapping found for HTTP request with URI
    [Err] 1111
    echart提示框内容数据添加单位
    rg.apache.ibatis.binding.BindingException: Mapper method 'com.dao.Cameao.getOnlineDayRation attempted to return null from a method with a primitive return type (float)
    bootstrap datarangepicker如何使用
  • 原文地址:https://www.cnblogs.com/zsb517/p/3990498.html
Copyright © 2011-2022 走看看