unity項目越大編譯速度越慢 ue4用藍圖秒編譯 背後分別的原因是什麼?

我知道藍圖是有虛擬機 但是速度快得像python類的即時動態語言 修改遊戲邏輯快得很神奇 而unity項目大到一定程度或者多導入了幾個插件 編譯速度明顯慢了許多 有時候甚至比ue的cpp編譯還慢


Unity是編譯整個工程,所以項目越大編譯越慢。而且由於通常會使用AOT或者C#-&>IL-&>C++-&>binary的複雜編譯流程,因此顯得比較慢。

UE4在開發期只編譯修改過的藍圖(以及受其影響的部分),而且這個過程相對簡單,能否稱為編譯都有待商榷,因此一般情況下都非常快。但實際上,當你的項目開展起來,產生複雜的繼承結構之後,編譯速度也會大幅降低。比如我們有一個Character基類,下面有十多個子類,此時修改基類也需要近10秒鐘才能完成編譯。


UE4編譯C++部分也很慢,我改一個文件都要幾十秒(頭文件太多... 4.15據說是提升了不少)BP部分我覺得是不能對應上編譯的概念-。-只能算生成把,除非你BP生成C++再編譯才好對比

Unity是每次修改整個項目C#文件都參與編譯,所以越來越慢~ 順便安利下優化Unity項目編譯速度


unity是先把js或者C#編譯成C++,然後再編譯C++,所以比直接編譯C++慢是很正常的。_(:з)∠)_


我猜測下,樓主你是否搞錯了,拿u3d的編譯跟ue4的藍圖對比?

應該這樣對比:u3d修改c# 代碼然後運行 VS ue4修改藍圖後運行

u3d修改代碼後編譯打包整個項目 VS ue4編譯打包整個項目


最近正在做虛幻的lua導出插件,如果題主覺得編譯藍圖快,那我告訴你我的這個更快,遊戲正在跑的過程就可以秒改遊戲邏輯。從某個角度來說,藍圖就是一個閹割版的腳本語言,既然是腳本語言,也就沒有編譯這一說了。


Ue4編譯c++也很慢


這個問題,我可以幫你很清楚的告訴你。但是不是特別深入。

Introduction to C++ Programming in UE4

這個頁面就可以找到答案,我的理解是這樣的:藍圖類與C++類可以通過UE的編譯過程鏈接使用UFUNCTION()宏,而且在一次編譯完成後,如果內容不再變化,那麼是不需要再編譯的。所以有時候在寫藍圖的時候只是像在寫一個流程,底層調用的函數,類等等已經是編譯好的。所以在未來的編譯中藍圖很快就完成了。

在說一下Unity,使用這個引擎要用到的是C#語言。因為C#語言的特殊性,在平台不同的情況下編譯起來是需要轉換的,那麼就多了一層編譯步驟。所以工程越大,使用的時間也會越多。

但是不是C#一定會慢的很離譜,C#編譯過程第一次可能會慢,但是不是改動大,或者相關性大。也不會消耗很多時間。

相信這麼說你應該明白了。


推薦閱讀:

c++的強制類型轉換?
對於 計算機圖形/界面/可視化/遊戲畫面/遊戲引擎 的疑惑?
VS編寫C++程序,如何在一個工程裡面創建多個包含main函數的文件?
c++的单例模式为什么不直接全部使用static,而是非要实例化一个对象?
「Bjarne 為增加 C++ 程序員身價有意增加 C++ 難度」是否屬實?

TAG:Unity遊戲引擎 | C | C# | 虛幻引擎 | 虛幻4遊戲引擎 |