前言
Unity 今年正式推出了2017的新版本甸祭,Unreal 也已發(fā)布到了4.17模闲,Unity持續(xù)保持著極高的市場占有量的同時硅卢,也有越來越多的國內(nèi)開發(fā)團(tuán)隊選擇Unreal進(jìn)行開發(fā)榕栏。傳統(tǒng)來講霹崎,Unity對移動平臺的支持優(yōu)秀计螺,而Unreal更適合制作3A大作夯尽。但是隨著引擎的幾次重大更新,Unity同樣支持了很多優(yōu)秀效果登馒,隨著手機(jī)性能的增強(qiáng)匙握,同時有很多大團(tuán)隊選擇Unreal開發(fā)了優(yōu)秀的移動平臺作品。故在此盡量詳細(xì)記錄引擎間的對比陈轿,以幫助各位更好的選擇適合自己的開發(fā)引擎圈纺。(文章中出現(xiàn)的特性有不了解的可以在評論里詢問)
功能性
我先從功能性談起秦忿,這部分會包括引擎實(shí)際支持的特性和功能。
圖形渲染
PBR 基于物理的光照模型
兩種引擎都支持蛾娶。
GI全局光照
都支持
SSS材質(zhì) 次表面散射
Unreal支持灯谣,Unity需要自己寫Shader
延遲渲染
Unity 可選擇正向或延遲,Unreal官方文檔寫固定為延遲渲染蛔琅,未驗(yàn)證
GPU粒子
Unreal支持胎许,Unity不支持,可以插件或者調(diào)用原生API實(shí)現(xiàn)(官方文檔未發(fā)現(xiàn)GPU的介紹罗售,百度到默認(rèn)是不支持)
后處理特效
Unreal支持很多種辜窑,Unity可導(dǎo)入相機(jī)特效腳本,支持基本的寨躁,可以自己寫
體積霧&體積光
Unreal在近期版本添加支持穆碎,Unity不支持,可以使用插件
陰影
Unreal做了很多陰影優(yōu)化职恳,Unity沒有所禀,但是性能較好奢驯,效果較差
HDR
都支持
總結(jié)
兩個引擎對當(dāng)今基本成熟的渲染技術(shù)基本上都支持侮繁,區(qū)別在Unreal仍然原生支持了很多效果拔群但是消耗同樣恐怖的特性,Unity則未做原生支持了袁,可以用插件的形式實(shí)現(xiàn)最筒。但是插件的代碼質(zhì)量良莠不齊贺氓,好的插件正版又很昂貴,基本不會去在項(xiàng)目中選擇床蜘。
物理引擎
Unity與Unreal底層的物理引擎都使用了Nvidia 的 Physx 辙培,Unity是3.3版本,Unreal是3.4版本邢锯,但是Unity的Physx只集成了核心內(nèi)容扬蕊,下面列出其中不支持的功能:
APEX 可破壞物
Unreal支持部分APEX可破壞資源的導(dǎo)入,Unity完全不支持(相關(guān)插件也沒找到)
Flex流體
Unreal可以通過合并Nvidia的分支支持丹擎,Unity可以購買插件
載具支持
Unreal原生支持載具制作尾抑,Unity只具備WheelCollider,需要自己拼裝或使用插件
物理資源
Unreal提供PhAT的物理資源編輯器
布料模擬蒂培、射線投射再愈、物理粒子、復(fù)雜碰撞护戳、物理步長等
都具備
總結(jié)
在物理引擎上兩個引擎相差還是比較大的翎冲,次世代游戲吸引人的高自由度破壞和真實(shí)的流體物理Unity都不支持,如果有相關(guān)需求還是建議不要重新研究算法媳荒,直接使用完整的Physx抗悍。
動畫
混合動畫
都支持
骨骼動畫
都支持
IK反向動力學(xué)
Unreal原生支持驹饺,Unity需插件
布娃娃系統(tǒng)
都支持
總結(jié)
在動畫模塊兩種引擎支持基本一致,除了IK的功能缴渊,IK在游戲開發(fā)中是個很重要的功能赏壹,但是Unity也提供了優(yōu)化IK的插件
地形
Unreal的地形系統(tǒng)比Unity強(qiáng)大很多,主要表現(xiàn)在可支持分層材質(zhì)衔沼、分層物理材質(zhì)卡儒、最大精度為8192x8192的高度圖、LOD插值俐巴、LOD燈光、程序化植被硬爆,可以說Unity的地形系統(tǒng)完全是個簡單版欣舵,同時Unreal原生支持流關(guān)卡,如果想做開放世界或者大地圖的話缀磕,Unreal可以比Unity少付出很多勞動力
CG制作及相機(jī)動畫
Unity2017開始支持缘圈、Unreal支持
框架
多線程支持
Unity只支持非MONO類的多線程,Unreal支持袜蚕。各有優(yōu)勢糟把,Unreal線程不好管理,Unity有很多費(fèi)時操作無法放到多線程牲剃。
模塊化
都采用了ECS的模塊化
使用性
這一模塊集中關(guān)注開發(fā)者使用引擎的難易
開發(fā)語言
Unity使用C#(請忽略js)遣疯,Unreal使用C++(同樣請忽略藍(lán)圖),開發(fā)者可選擇自己熟悉的語言凿傅,個人感覺C#使用時更加直觀且面向?qū)ο蟛珻++開發(fā)難度相當(dāng)大
Shader
Unity使用CG語言編寫Shader,Unreal多用藍(lán)圖完成Shader編寫聪舒,Unity也可食用ShaderForge等插件辨液,各有優(yōu)勢
編輯器使用
Unity精簡,Unreal復(fù)雜但詳細(xì)
說一說藍(lán)圖
這個東西可以方便策劃和美術(shù)對一些行為樹腳本箱残、模型參數(shù)進(jìn)行修改滔迈,如果用來寫邏輯的話不好追蹤也不好優(yōu)化維護(hù),請程序員拒絕他被辑。
使用環(huán)境
選擇Unreal的話請確保你的顯卡燎悍、硬盤、內(nèi)存盼理、CPU都為高水準(zhǔn)設(shè)備间涵,且有穩(wěn)定的翻墻手段
結(jié)論
與Unity相比,Unreal具備很多很酷的效果榜揖,但是使用難度同樣倍增勾哩,包括教程少抗蠢,問題解決經(jīng)驗(yàn)少等等。如果沒有游戲開發(fā)經(jīng)驗(yàn)的話思劳,建議從Unity開始學(xué)起迅矛。同樣如果你的項(xiàng)目中不需要使用上文列舉的特性的話,建議使用Unity∏迸眩現(xiàn)在有很多團(tuán)隊已使用Unreal為噱頭秽褒,但實(shí)際上并沒有使用到Unreal優(yōu)勢的特性,這是舍本逐末的威兜。另外一些團(tuán)隊認(rèn)為Unity的插件足夠支撐起更多強(qiáng)大的功能销斟,這也是不正確的。首先第三方代碼涉及版權(quán)問題椒舵。而且如果插件不開源的話蚂踊,無法追蹤代碼分析和優(yōu)化性能。且使用插件性能總歸是不如原生代碼支持的笔宿。