你為什麼不用unity引擎?

現在Unity大行其道,幾乎統治國內遊戲開發市場,逼迫Unreal開源,連cocos2dx都漸漸不是對手,更遑論其他小眾化的開發工具了,所以想聽聽大家怎麼說,以後開發遊戲真的只能選unity了嗎?如果你不使用unity做遊戲,是基於什麼樣的考慮呢?


Unity 的一個大問題是不含遊戲框架(unreal 有)所以看起來 unity 做東西很容易,其實並非如此。你學習 unity 並不會知道遊戲的抽象,只能得到一個強大的編輯器和類庫。需要自己做很多基礎設施完善。

也許是因為中國做遊戲,必須考慮伺服器主導,資源遠程調度,內容快速迭代,同時要面對大量不同運行環境的實際情況吧


用unity不能跟投資人說我們有次世代的畫面表現啊 拿不多錢咋辦


貼圖壓縮質量與大小的平衡是特別惱人的問題。安裝包里不能直接用 PNG,只能選擇有損壓縮或者是無損格式。對於三維模型的 albedo map 或者 normal map 可能用類似 PVRTC、ETC 這樣的有損壓縮格式就夠了,但對於一些 2D 遊戲的 sprite 以及 UI 切片文件來說,有損壓縮後的質量是不可接受的,只能使用 RGBA8888 格式,一個像素 4 個位元組,1024 x 1024 大小的紋理貼圖要用 4MB,還是不生成 MipMap 的情況下。

雖然有在運行時里讀取 PNG 文件作為紋理的解決方案,但這個解決方案完全算不上優雅。相對來說水果自家的 SpriteKit 雖然簡陋不少,但在這方面更勝一籌。


Unity 的缺點很多, 比如 Bug 多, API 設計不優雅, 腳本系統性能差又不好用, 奇葩的組件設計, 蹩腳的輸入管理......(詳見吐槽) 好在其中大部分官方都表示正在或將要改進.

但是我們還是選擇 Unity, 因為開發者對引擎的了解程度比起這個引擎是否完美對項目來說更加重要. 之前有考慮過 Unreal, 但誰能保證用 Unreal 就比用 Unity 開發效率更高, 質量更好呢?

如果說要選擇其他引擎, 那麼原因肯定是 Unity 存在對項目來說難以克服的問題. 好在目前還沒遇到, 而且也有其他成功的遊戲驗證了 Unity (這些開發者被坑的飛起了吧).

吐槽1: Unity bug 多有目共睹, 它們一般 20 天就發個大版本, 如此快速的迭代後果就是不穩定, 經常還發生設計變更, 實在是......
吐槽2: 那個 sharedMesh 和 sharedMaterial 真是夠了, 而且還有 sharedMaterials 這樣的返回堆對象副本的 API......
吐槽3: 所有的事件回調都塞進 MonoBehavior, 既不好看也不好用. 官方說正在設計新的事件解決方案, 坐等.
吐槽4: 內置組件, 該序列化的數據不序列化, 比如 Rigidbody, 默認質心和慣性張量自動計算, 即使腳本訪問修改了數據, 複製這個物體後, 質心和慣性張量還是自動計算的.
吐槽5: ......

再補充幾個 Unity 的編輯器的坑吧:
編輯器 API 里各種裸 delegate 訪問, 加個 event 不好嗎, 某個程序員直接對 delegate 賦值其他人代碼就全掛了;
編輯器里很多返回引用的 API, 上次看到一個插件, 那個作者直接修改編輯器風格, 自己的插件看起來正常了, Unity 的界面壞掉了;
寫編輯器看起來不是很難, 難的是處理 Undo/Redo, 默認的 Undo 解決方案是針對序列化數據的, Undo/Redo 觸發時 Unity 僅對序列化數據執行修改, 其他非序列化數據一概不管. 做個稍微複雜的的插件, Undo/Redo 就能煩死人了;
Editor 設計為特殊目錄, 裡面放 Editor 代碼. 看起來很美好, 實際上很傻. 編輯器少不了要訪問私有成員, 而且 Editor 代碼不能被 Runtime 代碼訪問, 最後還是用 UNITY_EDITOR 包起來寫到一起算了(有個小技巧, 使用 C# 的 partial 關鍵字來分離編輯器代碼是個不錯的選擇);
誰能告訴我 Gizmos 和 OnSceneGUI 的本質區別? Gizmos 類不能在 OnSceneGUI 里使用, 但是它們明明看起來是一種東西; 而當你摺疊一個組件後, 所有同類組件的 Gizmos 就看不見了......這個設計我始終不能理解......

再補充個: new GameObject 時, 這個 GO 屬於哪個 Scene ? 新的 SceneManager 也沒有解決這個問題.

成功遊戲案例:
The Forest on Steam
Republique on Steam
Cities: Skylines on Steam
Ori and the Blind Forest on Steam


老闆說遊戲包必須控制在5M以內而且要支持在線更新,更重要的是公司里招了一堆cocos2dx成手。
哦,對了,遊戲的名字叫鬥地主。


09年學用unity,12年有房有車了。現在拿了不少投資,帶著十幾個兄弟準備通過unity實現財務自由。


Unity3d和UE4各有優勢,我都用,看什麼項目

cocos2dx不評論


內存優化有點蛋疼。一個角色fbx內包含的動畫數量越高,內存消耗越高。

還是說我的打開姿勢不對?老司機們帶帶我。


其實完全可以提個問題,#你為什麼不用unreal引擎?#


為什麼那麼多人喜歡聽人黑unity呢? 還要收集各種理由,自己用用不就知道了。

10年開始用 Unity 最近轉了 Unreal,但是 Unity還在用。

你為什麼不用unity引擎?
手上的VR遊戲項目公司指定使用Unreal。 實際上 11年我就已經用 Unity做過VR眼鏡的虛擬現實應用了,並沒有啥大區別。公司指定Unreal主要是因為Unreal有良好的資源製作管線,較少的工作量就可以達到想要的畫質和性能。除此之外Unreal對VR平台的集成,支持的插件等也是不錯的優點。還有就是藍圖,在開發原型上可以允許非程序員參與等。Unity雖然也有各種插件可以做到這些,但畢竟不是官方的,插件更新與軟體版本更新的延遲等並不如Unreal那麼友好。而且Unreal有源碼可以自己修改官方不支持的功能。Unity雖然很多情況下都可以解決比如自己寫插件或通過反射實現但不如Unreal直接。

以後開發遊戲真的只能選unity了嗎?
當然不是。unity只是主流而已,並沒有說你不用unity就不能開發遊戲。 如果樓主的意思是unity會在以後保持主流引擎的地位么,只能說目前階段unity免費用的人又多,而且學習成本低。 如果有更好的引擎出現自然會替代unity 當前的市場地位,就像unity 替換掉之前的各種商業引擎。至於什麼時候出來就不知道了。

如果你不使用unity做遊戲,是基於什麼樣的考慮呢?
a 有更好的通用引擎。 Unity的特點是對程序員比較友好,而且比較小巧易學。不過現在Unity已經開始變得臃腫了,官方和大量用戶都在期望unity加入更多的功能,導致unity的複雜性在增加。如果有其他小巧而又能實現各種功能非常方便的引擎,我會考慮嘗試的。

b 項目需求。特殊需求無法用unity實現,比如小於5mb 內存之類的要求,或直接指定引擎之類的。(其實3.x 空包3mb多記得, 可惜已經不能發布現有平台)

c unity 迭代版本太多最終變得臃腫了。這時我會考慮尋求其他的解決方案。

d 需要大型團隊配合開發,並有很多非unity程序員的項目。unity一直不是非常適合大型團隊。當只有我自己負責開發的時候,我可以在設計階段就規避掉各種坑。但是多人協作的時候並不是所有人都有這種能力,而且因為項目規模我也不可能review 掉所有人的工作。


最後說下我現在覺得unity最需要改進的部分,就是gui。 我從2.5開始用的 OnGUI 到現在的 UGUI 就沒有覺得 gui 好用過。這套gui做編輯器擴展真tm好用, 問題拿來做遊戲就各種難用。


本人並不是做前端的,做遊戲伺服器的
見過u3d玩的很熟的人,問起邏輯,啥啥不會
cocos曾經很牛
u3d現在很火
你能保證u3d永遠很牛,技術永遠不落後?
邏輯玩好了,無論什麼樣的,你都能很快上手
根本的東西牢固,不斷學習,你才能不敗之地
不知兄台可玩『虛幻』,甩u3d10條大馬路

。。。。。。。貌似跑題了


不用Unity的原因就是因為它太好用了。


吐槽一下,都四五年了還不更新Mono,堆內存碎片GC不動,給的解決方案是少Alloc。


作為一位特效 感覺 U3D粒子系統並不完善 一些雖然不是很常用但是偶爾還是會用到的功能有缺失 例如 貼圖的單軸拉伸 mesh上不可使用SubUV 等
最最最重要的是 材質 無自定義材質 無顏色溢出 (雖然有插件可以解決 但插件就是往口袋裡塞東西 塞越多行走就越累)


我覺得應該是安裝包的大小!


因為unity的編輯器很好使,於是就只用編輯器。


一直覺得用什麼引擎看遊戲類型。
本人cocos2dx用過,u3d也用過。

如果你做個鬥地主,做個2d卡牌遊戲用u3d,那肯定是腦子進屎了

你要做個3d mmo用cocos,那肯定也是腦子進屎了。

根據遊戲類型選引擎吧。各有所長。


只是個業餘的傢伙來強答一發。
第一天,下載,安裝,摸索
第二天,開始嘗試下用編輯器弄一個場景
第三天,開始分配遊戲對象
第四天,給每個遊戲對象寫腳本
第五天,整理代碼
然後我發現我的無數亂七八糟的變數和腳本散落在了無數個遊戲對象的不同組件里。
此後三天,嘗試整理代碼,無果。
X的智障。
第⑨天,卸載,滾回Ethanon。
遊戲邏輯還是要放在一起比較好看(????ω????)
P.S.求評論區大神支招代碼管理…


如果有一天我不用unity引擎了,一個很大的原因可能會是美術品質.
幾年前用虛幻3X割版(UDK)做的項目現在看起來美術品質也很高.


  1. 動畫系統難用
  2. 特效系統難用
  3. 資源管理難用
  4. 場景管理難用
  5. 腳本綁定難用
  6. 遊戲框架沒有
  7. 鏡頭動畫難用
  8. AI尋路難用
  9. 項目管理難用

。。。。


不過話是這麼說,但是扯編輯器不穩定、api不優雅之類的,真是太年輕。


給你任何引擎你都一樣會用不好。


有更好的3D引擎么?有么?unity這個垃圾噁心死我了。api設計的什麼玩意兒,修改rectTransform的寬高,找了半天,屬性函數翻來覆去測試都tm不行,原來在sizeDllta里,還不能直接修改高度,還要new一個v2,c,浪費我多少時間,想要深入點使用就會發現類似的問題。這些最基本的東西,時間都浪費這這些方面,遊戲結果,動畫效果就沒有精力搞了。以前對他還存在的好感被一點點噁心掉了。好懷念as3API結構清晰明快,屬性函數使用方便,事件處理簡單,引用子項非常方便。。。不說了


推薦閱讀:

如何通過新浪微博API抓取大量用戶信息?
關於Python IDE如何選擇?
紅白機時代的fc遊戲卡帶是類似於u盤的存儲設備嗎?這種遊戲是用什麼語言寫的?
希望自己做個機器人出來,應該對哪些專業知識有所了解?
能否用函數與數組直接實現多個矩陣相乘?

TAG:遊戲開發 | 編程 | Java | Unity遊戲引擎 | Android |