這是一箇舊帖子,但我想我會回答這個問題,因爲這裏沒有人真的說得很對。
請務必記住,Unity的內部核心工作原理完全是本地的。物理引擎和所有涉及碰撞的事物。遮擋系統(umbra)。整個渲染引擎核心。所有這些都是用C/C++編寫的,並且可以在任何平臺上以完全原生速度運行。 AmitApollo說的是不正確的,與統一相比,虛幻引擎3不是更直接的「本地」。 Unity和Unreal引擎3以及任何其他3D引擎(如Ogre或cocos3d),其核心渲染系統都是用c/C++編寫的。其中一些引擎可能具有某些內部渲染算法比其他渲染算法更好地實現,因此可能會產生更好的性能,但這與它們是否是「原生」無關,因爲內部核心渲染系統對於所有渲染系統都是原生的。
物理引擎的內部工作原理也是用c/C++編寫的,因此UE3和Unity中的物理引擎都以「全速原理」運行。
在iOS上,epicCitadel演示還沒有顯示出比Unity更高的技術實力或性能。堡壘演示的'視覺影響'很大程度上取決於它是非常好的藝術作品。堡壘演示不會比Unity在iOS上能夠處理的任何更高的頂點數量,堡壘演示沒有演示比Unity在iOS上能夠做到的任何更高級的着色器或照明技術。實際上,Unity的更多示例展示了比虛幻引擎3所展示的更先進的移動渲染技術。查看Unity製作的Shadowgun或BladeSlinger遊戲,這兩款遊戲均展示了比虛幻引擎3所展示的更先進的移動渲染技術。 Light Probes,具有半透明和法線貼圖的移動BRDF着色器,以及良好實施的動態移動陰影等等。應用商店中絕大多數成功的3D遊戲都是Unity遊戲,Unity因此將大量R & D納入Unity的移動渲染性能和功能。
Unity現在用C#和Mono編寫腳本。它的運行速度比本地代碼慢,大多數估計iOS的速度會降低大約50%。但是你必須記住,你只是在這個代碼中做遊戲邏輯。您不是在Unity中編寫C#和Mono中的任何代碼來處理其內部渲染系統的工作,也不處理物理系統的內部工作。你只用C#編寫遊戲邏輯,然後與渲染和物理內核進行交互,然後以完全原生速度執行。 Mono C#的執行速度比原生C++慢,但是如果你編程的很聰明,我認爲你會發現這根本不是什麼障礙,因爲你只在Mono C#中做遊戲邏輯,遊戲邏輯不一定是CPU很重。根據我的經驗,使用Mono C#編寫的純遊戲邏輯讓iPad 2降至60 fps以下真的非常困難。我從來沒有受到過這個阻礙。
如果我們要與虛幻引擎3進行比較,請記住,UE3還設置爲使用非本地語言UnrealScript編寫遊戲邏輯。 Unrealscript是一種非常類似於Mono C#或Java的語言,其中UnrealScript被編譯爲字節碼,然後在運行時解釋。意思就像Unity一樣,遊戲邏輯在UE3中不是「本地」的。
現在,如果你看這裏: http://lua-users.org/wiki/LuaVersusUnrealScript 也就是說在使用int一個簡單的算術運算比較虛幻到C++的基準。它顯示虛幻腳本是C++速度的1/4到1/20。
然後看看這裏: http://www.codeproject.com/Articles/212856/Head-to-head-benchmark-Csharp-vs-NET 如果向下滾動到C#vs C++簡單算術基準。它顯示Mono C#是C++執行簡單int算法的速度的3/4。 Mono C#在使用浮點進行簡單算術時速度約爲1/2。 int64和double基準對我們來說並不意味着什麼,因爲通常你不會在iOS遊戲邏輯中使用那些性能嚴重的代碼。
現在,其他基準測試顯示,Mono C#的性能一直不如C++性能的1/20。但這些都是通過非常具體的測試,真正蘋果基準測試的最佳蘋果是我能找到的那些簡單的算術測試。
真的,因爲Unity的腳本運行在Mono C#上,UE3運行在UnrealScript上。 Unity實際上是能夠爲遊戲邏輯代碼提供更好性能的引擎。
與iOS上的Unity相比,UE3更先進,或提供更多性能或更高圖形功能的概念並不真實。恰恰相反是真的。
現在確實如果你使用了類似cocos3d的東西,你可能會獲得更好的性能,因爲你的遊戲邏輯也可以用C++本地編寫。但使用像c#這樣的腳本語言來處理遊戲邏輯的好處我認爲遠遠大於性能損失,而這通常不會成爲問題。也就是說,使用腳本語言進行遊戲邏輯的好處在於,它爲您提供了更快的設計迭代,在進行遊戲時,由於事物的離奇程度以及重新編譯和測試代碼的頻率很高,因此非常重要。
但是,在Unity中,使用Pro版本編寫本地代碼插件非常簡單。所以如果你有一段需要以本機速度運行的性能關鍵代碼,你可以用C++編寫它,編譯成本地庫,然後從Mono C#調用它。
出色答卷。 –