一.基于Unity2D的一些好处
1.跨平台,平台相关的功能Unity都已经帮你实现好了。一些平台没有的功能通过SDK的接入可以解决
2.基于Unity的酷炫的粒子光效编辑。Unity本身就是一个功能强大的粒子编辑器。 之前我还认为cocos2d-x的粒子系统的功能足够了,但是跟专业的编辑器比起来,远远不够。粒子系统要跟粒子特效编辑器配合起来,其功能远远不是之配置一个粒子系统的几个参数就可以的。cocos2d-x本身的粒子系统是很鸡肋的功能,只能拿来做一些简单的光效,不可能用来做复杂的技能特效。
3.由于框架和架构的优势,Unity的游戏可以极大程度避免崩溃和闪退。由于代码都是c#写的,并且是组件结构,所以即便出了错误也只是个异常而已,而不会影响到系统流程。
4.Unity Profiler性能分析器可以轻易的找到内存和cpu的瓶颈
5.编辑器也可以扩展,可以开发一些比较公共的组件,让策划直接拖拽便可实现组件模块。
6.方便的资源管理系统。使用Unity,你不用特意维护几份资源(比如原始资源、打包后的资源、iOS版本资源、Android版本资源等等),只要一份资源,然后Unity里面可以设置它的具体参数,比如使用纹理压缩、最大限制在512x512大小等等。Unity发布游戏的时候会自动根据平台相关的导出选项导出正确的资源。
7.丰富的插件。有大量的功能我无论拿cocos2d-x还是Unity都不知道怎么实现。比如一些shader特效、物件碎裂的特效、场景破坏和变形的特效等等,这些在Unity插件中都可以找到对应的实现。
8.很多Unity的游戏都可以反编译
9.很多功能都是成体系的自然而然的。比如物理、碰撞检测、导航寻路、场景管理(Scene manager)、场景烘焙(光照)。这些无论拿哪个出来都是相当有技术的功能,但是在Unity中几个按钮、几步操作就可以实现对应的功能。
10.可以一定程度上减轻程序员的负担。所见即所得,把设计的工作直接交给美术和策划。
二.基于Unity2D的一些缺点
1.sdk开发调试不是很方便,改一下得导出一个版本
2.项目不是开源,很多插件都需要收费
3.Unity中资源对应的配置有很大的重要性,所以一个Unity功能就是资源+代码的整合,你很难分出一个资源包。这样你的Unity项目可能很大。(使用AssetsBundle打包后可能避免这个问题,但是项目初期资源变动大,经常打包很不方便)
4.2D的简单动画功能实现麻烦,要创建的东西较多。
5.C#语言的学习需要有一定的面向对象的编程基础。
6.由于使用一套资源图片就支持所有设备,画面渲染就有点缺陷
7.学习成本较高,但是熟悉后开发效率高