cocos2d转unity3d小结

      unity3d第一个项目已经算是完成了,从cocos引擎转过来也有一段时间了,下面列出一些在使用中遇到的坑或者unity3d与cocos2d差异比较大的地方。适合其他引擎转U3D或者纯新手小白,万一有路过的大神请踩了我这朵野花指出错误,好好学习天天向上。游戏主要是2D界面,搭配live2d伪3D效果。我也想做纯3D的可是没有钱啊。

一 .版本以及部分插件工具

     (1).unity_5.3.5p6

     (2).UGUI

     (3).DoTween

     (4).SceneManager

     (5).live2d

     (6).playerMaker;Anti-Cheat(都已弃用)

二.经验总结

    (1).分辨率适配

         1.使用UGUI Canvas  Render Mode :Screen space-Camera 绑定摄像机,摄像机采用正交 Orthographic Canvas Scaler:UI Scale Mode 采用 Scale With Screen Size ; Reference Resolution 使用640*960分辨率, Screen Match  Mode:expand.

         2.部分背景设为1136*1136 在iphone5,6上依然会有白边,目前解决方案是背景设为1138*1138。

         3.建议美术CG与背景出图大小为,1024*1024(不重要的背景可512*512通过拉伸显示)。

     (2).资源相关及优化

         1.图片尽量使用尺寸为2的次幂 32*32,64*64 到 2048*2048,format 采用 compressed 压缩,个别尺寸不好做处理资源又大,可以采用16bit,采用这一方法美术需少使用渐变色,否则图片会严重色块化。

        2. 图片也可直接导入PSD(相当于图集),texture Type 使用Sprite(2D and UI); SpriteMode 使用Multiple, 然后使用 Sprite  Editor自动切割,适用某个界面一堆小图。缺点是每次替换PSD需重新切割,改动有可能会使之前自动切割的被重新命名。

        3.图片参数需把Generate Mip Maps 选项勾掉,可减少一定大小,这个选项的功能是在3D游戏中视野远近影响物体模糊。

        4.字体可使用ttf,不需要美术单一出atlas, text控件也支持富文本、描边、阴影等。

        5.plist不再可用,策划需提供TEXT文本或JSON等。

        6.音频文件支持.AIFF  .WAV  .MP3 .OGG 。

           视屏文件支持.MOV  .MPG  .MPEG .MP4  .AVI  .ASF。

        7.修改stripping level,通过库剖离来减少DLL的空间大小。

   (3).UGUI、脚本、其他控件相关

         1.一个场景尽量使用一个canvas,需显示不同层级可使用多个摄像机,不同摄像机culling mask不同layer,通过修改摄像机Depth来控制层级关系。

         2. live2d比较特殊,如果需要将其他控件置于它的上面,除了用单一摄像机照射外,还需改变Live2d的Z轴与它摄像机Clipping Planes的Far参数。

         3.需要做屏蔽层,只需创建一个panel 即可,改变它的层级即可屏蔽下方的点击与触摸。

         4.如果在一个button上添加image等其他控件,其他控件的范围大小也会影响到按钮的点击区域。

         5.支持帧动画,只需全部选中图片拖入Hierarchy即可生成。

         6.U3D粒子系统不支持particle Designer等粒子生成插件,但源生的功能更强,可实现预加热功能。

         7.动画建议使用自带的animator控件,也可以使用ITween,DoTween,HotTween等一些插件来实现简单的位移变形等。

         8.如果使用tween类插件,建议使用DoTween,更加类似cocos写法,性能优化等比较好,(NGUI自带itween)。

         9.注意所有的tween类插件均不支持image sprite单个透明度的变化,只能修改材质透明度,而所有的UGUI image控件共用同一材质,除非每个image单独添加材质。也可通过单独手写脚本来控制透明度变化,需要在update里计算,比较繁琐。

         10.脚本中一般使用的update有 Update 与FixedUpdate等,update 跟当前帧数相关,fixedUpdate则是物理时间,所以一些物理逻辑要放入FixedUpdate进行。

         11.想在场景切换后还保持某个GameObject存在使用方法 DontDestroyOnLoad(transform.gameObject);

         12.把一些模型投影到ui上可以用RenderTexture,也可用这个创建小地图、镜相、动态阴影等效果。注意rendertexture消耗比较大。

         13.unity 5.0后增加了AudioMixer混音器,可以把所有audioSource输出放入同一音轨,通过这个实现全局音乐开关和音效开关。

         14.游戏暂停可使用 Time.timeScale = 0。

         15.使用u3d自带animator编辑动画,动画结束后可添加回调、动画可倒播。通过状态机可完成比较复杂的动画模块,特定情况下的动画需要与脚本同时控制。

         16.3D物理碰撞同样使用于2D,GameObjecr上需添加刚体控件。

         17.粒子贴图与cocos相似,尺寸大小最好小于64*64。

     (4)多语言

         1.简体版与繁体版,通过修改text所挂的ttf来实现,文字尽量在unity里输入,减少贴图上文字的数量,这样只需改变ttf即可实现简体繁体的切换。

         2.英文版等共存,unity内需要输入的文字全部写在text里,需要写脚本通过key value来读取每个text显示的内容。

         3.一些界面图片上的文字不好通过UNTIY输入来替换的(比如IAP礼包等界面),可创建多个不同的prefab,进入场景时候通过区分

语言环境来调用。

     (5)与IOS Android 交互

          1.多语言 通过Application.systemLanguage区分当前设备语言环境。注意:ios9以后Unity通过Application.systemLanguage返回的简体中文和繁体中文都是SystemLanguage.Chinese,所以需要在ios 上返回当前语言参数给unity。

         2.ios上显示插屏等会应为Unity 的rootViewController时长改变而造成奔溃或者不显示,需要在调用第三方SDK弹出时候添加

UnityAppController *appController = (UnityAppController *)[UIApplication sharedApplication].delegate;

         3.Andoird 需要在点击购买后弹出屏蔽层,否则点击过快或造成传入的参数改变。提供去除屏蔽的回调,java层在购买和失败后调用。

         4.iap与兑换码最好写成单例,某些Android渠道要求在一开始调用IAP回调,回复购买只在IOS与google版本中显示,需留好接口在不同渠道中开启或关闭。

         5.unity使用ARC,ios某些广告低版本SDK未使用,需要在这些广告类中单独添加参数 -fobjc-arc。

三.遗留问题

     1.shader等使用不熟练。

     2.过场采用sceneManager插件,用GUI实现,如使用UGUI animator如何实现。

     3.所有按钮点击放大等效果公用一个animator,再触摸屏幕其他区域有可能会使其他按钮响应放大效果。

     4.Android下手机如果有系统提示或来电,在进入游戏内游戏声音丢失,需重启游戏。

     5.scorllview背包等因为包含物品数量较少没有使用动态池。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容

  • This article is a record of my journey to learn Game Deve...
    蔡子聪阅读 3,787评论 0 9
  • 一:什么是协同程序? 在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,...
    胤醚貔貅阅读 2,080评论 0 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,185评论 25 707
  • 1、基础知识: 标题栏 菜单栏 工具栏:变换工具、gizmos切换、播放控件、层列表、布局列表 功能窗口 2、资源...
    小小小小小丶敏阅读 515评论 0 1
  • 明天就是开学的日子了,今晚上吃完饭玩了会就把书包收拾好了,收拾的托托的,这个真不用我操心。在她姥姥家住了几天,回来...
    若晨_8572阅读 92评论 0 0