LiteralliJeff 发表于 2021-11-29 07:39

Unity 的 2D 功能与 Cocos2d-x 相比有哪些优势和劣势?

自问自答,最近在用Cocos2d-x做了一个2D游戏--
【深入Cocos2d-x】使用MVC架构搭建游戏Four之后,又用Unity的2D功能做了一个
MrNerverDie/Unity-Flappy-Bird · GitHub ,总结了两个引擎的优缺点,我主要是从Unity的角度进行总结的,各位同学可以参考下:
Unity的优势:

[*]良好的编辑器支持,包括Animator动画状态机,Animation动画编辑器,粒子编辑器等等。
[*]Unity可以使用C#编程,省去了内存管理的麻烦,还可以通过协程来处理游戏中的异步事件等等,C#的很多库也是很方便(PureMVC,LitJSON)
[*]Unity有内置的Profiler,可以直观地对性能进行调优。
Unity的劣势

[*]对GameObject之间的通讯的支持做的不好,关于这一点,我写了一篇博客来讲这个问题:【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter
[*]对NameSpace支持的不好,到4.x的时候NameSpace还是不能正常使用
[*]对文件读写没有内置的支持, 对JSON和XML数据的读写 没有内置的支持。
[*]在2D方面的许多特性还是在开发中,功能比较弱。比如Sprite Packer,骨骼动画等。
[*]由于Unity入门比较容易,导致大量美工和策划也能使用Unity,致使网上的代码资源良莠不齐,很多博客和文章连最基本的代码高亮都没有(比如说Unity3D贴吧和游戏蛮牛论坛)。相比之下,Cocos2d-x网上的学习资源比较适合程序员。

stonstad 发表于 2021-11-29 07:42

自问自答,最近在用Cocos2d-x做了一个2D游戏--
【深入Cocos2d-x】使用MVC架构搭建游戏Four之后,又用Unity的2D功能做了一个
MrNerverDie/Unity-Flappy-Bird · GitHub ,总结了两个引擎的优缺点,我主要是从Unity的角度进行总结的,各位同学可以参考下:
Unity的优势:

[*]良好的编辑器支持,包括Animator动画状态机,Animation动画编辑器,粒子编辑器等等。
[*]Unity可以使用C#编程,省去了内存管理的麻烦,还可以通过协程来处理游戏中的异步事件等等,C#的很多库也是很方便(PureMVC,LitJSON)
[*]Unity有内置的Profiler,可以直观地对性能进行调优。
Unity的劣势

[*]对GameObject之间的通讯的支持做的不好,关于这一点,我写了一篇博客来讲这个问题:【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter
[*]对NameSpace支持的不好,到4.x的时候NameSpace还是不能正常使用
[*]对文件读写没有内置的支持, 对JSON和XML数据的读写 没有内置的支持。
[*]在2D方面的许多特性还是在开发中,功能比较弱。比如Sprite Packer,骨骼动画等。
[*]由于Unity入门比较容易,导致大量美工和策划也能使用Unity,致使网上的代码资源良莠不齐,很多博客和文章连最基本的代码高亮都没有(比如说Unity3D贴吧和游戏蛮牛论坛)。相比之下,Cocos2d-x网上的学习资源比较适合程序员。

TheLudGamer 发表于 2021-11-29 07:47

想到什么就写什么就不管什么优势、劣势的分了,自行提取吧
1、
使用Cocos2d-x,团队需要自己写编辑工具,用来供内容产生者(策划或者其他人员)编辑关卡或者是页面。所以,整个工具完全需要根据要做的项目,进行一段时间的开发。细节上大致是:需要自己设计关卡的结构,自己写关卡的load代码,会需要根据策划的使用反馈调节工具的界面,快捷键等等,最后,产生bug的时候有时候发现可能是工具引起的。
对于游戏部分来说,也得根据项目需要,集成很多的第三方工具,如box2d(物理)、fmod(声音)。这些部分,对新团队来说,导入也是一定的成本(小一点而已)。
所以,用Cocos2d-x,如果团队不是有一定的沉淀,那么,会在周边的支持性工作上费掉不少力气。就在一定时间内不能“专注在内容的开发上”。
Cocos2d-x的这块软肋,反过来就是Unity3d的硬功夫。
2、
使用Unity3d,因为它本身是个通用引擎,没有什么定制化的地方。所以,产生的包的大小在mobile上是个硬伤。除了这个我会介意的地方之外,其他可能都是我比较喜欢的地方了,物理、场景、声音、脚本应有尽有,虽然相对于Cocos2d-x,它没有源代码可看,但是,如果有一个方法让我不看源代码就解决问题,我一定更喜欢这个不看源代码的方式。这块Unity3d还真有,它的文档、资料、社区在我使用中,基本能解决80%的问题。
有人硬要以开源来说的话,我想的是,庞大如unity3d,真的出现问题,在茫茫代码中试图找到相关的地方,插入自己的代码实现部分,可能本身就不易。不像Cocos2d-x,代码量其实很小,很容易看完,所以容易改动。所以,大多数内容开发者,开始的时候不必要太介意这个事情。

mastertravels77 发表于 2021-11-29 07:48

优势:
1、自带动画编辑器
2、可以使用C#
3、可视化编程和调试方面很方便
4、部分逻辑代码可以直接复用在unity3d项目中
5、强大的unity asset 商店
6、强大的社区,遇到问题很容易在google查到
7、相对C++, C#和js相对简单一点
劣势:
1、代码不开源,遇到问题很抓狂,只能看文档,或求助社区
2、由于C#,js 都是自动gc,程序员可能会不注意内存优化
3、cocos自己的骨骼动画这方面一直三心二意,dragon bones 支持的不行,ccs莫名崩溃,这次升级到3.0,完全不支持之前引擎升级到3.0
总结:
其实两款各有优劣,看自己团队情况,说实话每个项目都有自己不同的特点。

johnsoncodehk 发表于 2021-11-29 07:55

现有条件下cocos2d的编辑器让很多项目团队望而生畏啊。

yukamu 发表于 2021-11-29 07:58

用Unity,你只需要关注怎么使用Unity就行了。
用cocos,你不但要关注怎么去制作游戏,还要解决cocos的bug,还要想办法在有限的编辑器功能下实现策划所需要的功能,或者想想怎么去制作满足策划需求的编辑器,还要想办法怎么去把游戏代码和自己已经修改过的底层功能移植到最新的cocos版本中。

Arzie100 发表于 2021-11-29 07:59

优势:Unity用的C#
劣势:Unity用的C#
页: [1]
查看完整版本: Unity 的 2D 功能与 Cocos2d-x 相比有哪些优势和劣势?