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功能也會很累贅。
總而言之,兩家都是遊戲引擎的大家,兩者都能適應不同的需要,各具特色各有特點,估計誰也滅不了誰。
不過,投靠一家的人估計會反對另一家吧?
相關文章
- Instruction和Question的區別和聯絡Struct
- SCADA和PLC的區別聯絡
- tcp/ip和http的區別和聯絡TCPHTTP
- Rxjs map, mergeMap 和 switchMap 的區別和聯絡JS
- http、socket、tcp的區別和聯絡?HTTPTCP
- java-介面和抽象類的聯絡和區別。Java抽象
- javaSE中的==和equals的聯絡與區別Java
- hive中order by、distribute by、sort by和cluster by的區別和聯絡Hive
- C/C++引用和指標的聯絡和區別C++指標
- 【知識點】 gcc和g++的聯絡和區別GC
- HDFS 塊和 Input Splits 的區別與聯絡
- 程式和執行緒的區別與聯絡執行緒
- 程序、執行緒和協程之間的區別和聯絡執行緒
- 模電和數電在應用上的區別和聯絡
- 程式、執行緒和協程之間的區別和聯絡執行緒
- SAP UI5 和 OpenUI5 的區別和聯絡UI
- Vue中watch、computed與methods的聯絡和區別Vue
- spring、springmvc、springboot、springcloud 之間的聯絡和區別SpringMVCSpring BootGCCloud
- cgi和fast-cgi以及php-fpm的聯絡和區別ASTPHP
- OData API 和 Restful API 這兩個概念的區別和聯絡APIREST
- Python中__new__和__init__的區別與聯絡Python
- gcc 和 g++ 的聯絡和區別,使用 gcc 編譯 c++GC編譯C++
- Linux 上的 AppImage、Snap、Flatpak 之間的區別和聯絡LinuxAPP
- SAP R/3,SAP ECC 和 SAP S/4HANA 的聯絡和區別
- HTTPS、SSL、TLS三者之間的聯絡和區別HTTPTLS
- Unicode,UTF-8和UTF-16的區別與聯絡Unicode
- IPLC專線、CN2、BGP、CIA和普通線路的區別和聯絡
- 跟你深入剖析可迭代物件和迭代器的區別與聯絡物件
- `std::packaged_task`、`std::thread` 和 `std::async` 的區別與聯絡Packagethread
- 可觀測性與傳統監控的區別和聯絡
- 【Python入門必看】Python中Cookie和Session的區別與聯絡!PythonCookieSession
- Centos和Redhat有什麼關係?Centos和Redhat的區別與聯絡介紹CentOSRedhat
- 產品經理和專案經理區別與聯絡
- Linux中程式和執行緒的區別與聯絡,建議收藏!Linux執行緒
- 【科普】等級保護與分級保護的區別和聯絡!
- c語言中陣列的宣告喝初始化的區別和聯絡C語言陣列
- 【java】【集合】List的三個子類—ArrayList、Vector、LinkedList的區別和聯絡Java
- 分散式機器學習、聯邦學習、多智慧體的區別和聯絡分散式機器學習聯邦學習智慧體
- Jtti:伺服器與資料庫有何區別和聯絡?Jtti伺服器資料庫