UNITY3d和COCOS2D-X的區別和聯絡
UNITY3D和 COCOS2D-X都是跨平臺的遊戲開發引擎,COCOS2D是專門做IPHONE遊戲的2D遊戲引擎。
這些引擎到底是什麼時候出現的,還真是不怎麼了解,但是不管他們是什麼時候出現的,由哪些人弄出來的,這兩個引擎都挺好用的,而且都各有特長。
下面就從多個方面來對比闡述一下:
(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功能也會很累贅。
總而言之,兩家都是遊戲引擎的大家,兩者都能適應不同的需要,各具特色各有特點,估計誰也滅不了誰。
不過,投靠一家的人估計會反對另一家吧?
相關文章
- tcp/ip和http的區別和聯絡TCPHTTP
- orcle pfile和spfile的區別和聯絡
- NET|Ref 和out 的區別和聯絡
- Instruction和Question的區別和聯絡Struct
- Oracle中User和Schema的區別和聯絡Oracle
- 詳解CALayer 和 UIView的區別和聯絡UIView
- http、socket、tcp的區別和聯絡?HTTPTCP
- SCADA和PLC的區別聯絡
- Session和Cookie的聯絡與區別SessionCookie
- CGI與Servlet的區別和聯絡Servlet
- Session和Cookie的區別與聯絡SessionCookie
- 轉:IDOCBAPIRFC區別和聯絡API
- java-介面和抽象類的聯絡和區別。Java抽象
- 中斷和異常,陷阱的區別和聯絡
- Jdk、Jre Jvm的區別和聯絡JDKJVM
- Linux和Ubuntu的區別與聯絡LinuxUbuntu
- has、ohasd、crs、cluster區別和聯絡
- javaSE中的==和equals的聯絡與區別Java
- 【知識點】 gcc和g++的聯絡和區別GC
- Rxjs map, mergeMap 和 switchMap 的區別和聯絡JS
- 程式和執行緒的區別與聯絡執行緒
- HDFS 塊和 Input Splits 的區別與聯絡
- NUMA,MPP和HADOOP的區別與聯絡Hadoop
- 並行和併發的區別與聯絡並行
- volatile和synchronized的區別與聯絡[轉]synchronized
- malloc free與new delete的區別和聯絡delete
- C/C++引用和指標的聯絡和區別C++指標
- hive中order by、distribute by、sort by和cluster by的區別和聯絡Hive
- SAP UI5 和 OpenUI5 的區別和聯絡UI
- 程式、執行緒和協程之間的區別和聯絡執行緒
- 模電和數電在應用上的區別和聯絡
- 程序、執行緒和協程之間的區別和聯絡執行緒
- ORACLE中的兩個概念:user和schema的區別和聯絡Oracle
- v$sqlarea,v$sql,v$sqltext的區別和聯絡SQL
- 【Privilege】SYSOPER和SYSDBA特權的區別與聯絡
- HDC,CDC,CClientDC的區別和聯絡是什麼?client
- cgi和fast-cgi以及php-fpm的聯絡和區別ASTPHP
- OData API 和 Restful API 這兩個概念的區別和聯絡APIREST