Unity3d和Cocos2dx有什么区别?
下面从多个方面进行对比:
1)是开源的吗?
COCOS2D是开源的,有文档支持,论坛资料浩如烟海。
UNITY3D是闭源的,有强大的文档支持,论坛资料和其他一样浩如烟海。
对于COCOS2D来说,开源意味着可以进行任意转换,更深入的了解各种游戏需求的底层实现原理,定制更符合自身需求的类库。
相对来说,是个不小的麻烦,因为是开源的,所以可以随意改,因为可以随意改,所以容易纠错,调试和维护的成本也会翻倍,因为更接近底层,所以实现一个功能或者自己动手往往更困难。
对于UNITY3D来说,闭源意味着更方便的使用和更好的质量保证。同时也意味着偶尔会有用户想看却看不到的东西。接近底部需要付出很大的代价。当你想定制你自己的数据结构或函数时,很难开始。
2)免费吗?
COCOS2D免费,意味着服务差,很多程序员不愿意看到的现象会莫名其妙的出现。偶尔作者不小心出事什么的,也没办法控制...比如作者不小心用了一个非常危险的方法写代码。这个时候,基本上用户都想哭了,想找出错误是极其困难的,但是总能找出来。免费的好处是,有一天,如果你用COCOS2D玩一个非常牛逼的游戏,你就可以
UNITY3D收费,也就是说……服务真的很好。U3D团队尽量把烦恼留给自己和程序员,用起来真的很爽。很多麻烦被U3D消灭在萌芽状态,确实不错,但是要花钱。
3)跨平台能力
两者都可以跨平台。
COCOS2D的跨平台需要大量的代码重写,面对各种平台的各种细节比较麻烦。所以在使用COCOS2D的时候,很多麻烦就来了,所以在面对平台特有的、更麻烦的问题时,程序员的基础就好很多,也更容易解决。
UNITY3D的跨平台,程序员只需要选择按钮就能从容搞定,但当面对U3D团队没有想到的平台特有的、更麻烦的问题时,这个时候的程序员就需要用力“吃”键盘来抑制内心的焦虑……
4)团队发展
Cocos2d完全不考虑团队,所以团队合作的工具基本都是自顾,细节,麻烦。UNITY3D想了一点,做了很多,但也有纠结的地方,如果没有完全理解,程序员会变得难以接受。值得一提的是,UNITY具有很强的所见即所得能力,动态解读和现场执行。COCOS2D一直在朝这个方向努力,也许以后吧。
5)外围工具
COCOS2D是集体智慧,所有路人都提供了各种工具。COCOS2D把它们整合在了一起,各种工具有各种麻烦,也有各种好处。总的来说,花点精力是好的。
UNITY3D自己解决了很多麻烦的问题,也有很多人做了周边工具。但是,它不是开源的,而且要花钱,提供好得多的服务。
6)可定制性
COCOS2D的可定制性可怕,因为是用C++写的,所以程序员可以为所欲为,而为所欲为的代价就是所有的细节都要顾及,所有的麻烦都要承担(比如写出来的工具不是跨平台的,定制的数据结构不能通用,一个类序列化到其他平台后不能反序列化等等。).
UNITY3D有一个专门为定制编写的类库,用的不多,但可以肯定的是这个类库是跨平台的,这是一个很大的优势。
7)3D
这个U3D真的爆了COCOS2D,但是不想玩3D游戏怎么办?额外的3D功能也将非常麻烦。
总之,两者都是游戏引擎的高手,都能适应不同的需求,各有特色。估计谁也灭不了谁。