1. ERROR:System.ArgumentException: Attempt to construct staged filesystem reference from absolute path
今天打Android包的時候突然出現(xiàn)了這個報錯蟆淀,也就是前2min的時候打包都還沒有問題宰翅,后面突然出現(xiàn)了問題,去看了Log文件成肘,報錯也是只有這個亿遂。我采用的辦法是將sdcard中的UE4Game刪掉浓若,然后重啟UE,就可以蛇数。
打開命令行挪钓,輸入
adb shell
然后會進入adb的shell中,在切換到sdcard下面
cd sdcrad
進入sdcard文件夾下面后耳舅,鍵入ls后碌上,是可以找到UE4Game這個文件夾的,將這個文件夾刪掉就可以
ls
刪掉這個文件夾
rm -r UE4Game
然后重啟你的UE就可以啦
2.如何查看Unreal Engine 的 UMG 中Draw Call數(shù)量
開啟游戲界面后浦徊, 在Console Window中輸入stat slate 馏予,此時會彈出一個框框,里面有大量的參數(shù)和屬性盔性,找到Num Batches 屬性霞丧,后面對應的數(shù)字就是Draw Call的數(shù)量。(一般在Android application中同時4指按下就可以就會彈出來Console Window)
3.在Xcode中編譯UE4或Xcode -> Product -> clean時出現(xiàn) exit with code 5 報錯
有時Xcode編譯UE4經(jīng)常出現(xiàn)exit with code 5冕香,再失敗后執(zhí)行clean操作也會因為這個報錯失敗蛹尝。
至于報錯原因在log里面有顯示,此時打開Epic Game 暂筝,在UE4對應的引擎版本中選擇“驗證”箩言,等待驗證完畢后再重新編譯或者Clean一般就可以成功了
4. 編譯成功,啟動UE4時在UClassCompiledInDefer()方法處崩潰
/**
* Specialized version of the deferred class registration structure.
*/
template <typename TClass>
struct TClassCompiledInDefer : public FFieldCompiledInInfo
{
TClassCompiledInDefer(const TCHAR* InName, SIZE_T InClassSize, uint32 InCrc)
: FFieldCompiledInInfo(InClassSize, InCrc)
{
UClassCompiledInDefer(this, InName, InClassSize, InCrc); // 會在此處崩潰
}
virtual UClass* Register() const override
{
LLM_SCOPE(ELLMTag::UObject);
return TClass::StaticClass();
}
virtual const TCHAR* ClassPackage() const override
{
return TClass::StaticPackage();
}
};
這種情況經(jīng)常出現(xiàn)在我在遠程倉庫中拉取了新的代碼后重新編譯UE4(此處重新編譯是指編譯Unreal Engine焕襟,不是UE中打開的項目),此時點擊Xcode -> Product -> Clean ,進行緩存文件的一個清理饭豹。清理成功后再次編譯就不會再出現(xiàn)崩潰情況
5. UE 出現(xiàn)exit with code 5 鸵赖,Error : Action graph contains cycle!
檢查一下是否出現(xiàn)了兩個模塊在build.cs中出現(xiàn)了相互依賴务漩。因為在UE中是不允許模塊互相依賴的,如果A模塊依賴B模塊它褪,B模塊依賴A模塊則說明A饵骨,B模塊設計是有問題的,兩個模塊中有耦合部分茫打,要將公共部分抽離出來居触。從原因上來說就是在build.cs中,A依賴了B模塊老赤,則在生成動態(tài)鏈接庫的時候會跳轉(zhuǎn)到B模塊尋找B模塊的信息轮洋,而B模塊的build.cs中又依賴了A模塊,則在引入B模塊的信息的時候抬旺,又要跳轉(zhuǎn)到A模塊弊予,A模塊又依賴了B模塊,再跳轉(zhuǎn)到B模塊中开财,就變成了一個死循環(huán)(這和在C++ 中汉柒,A.h 中include了B.h,,而在B.h中又include了 A.h的問題是類似的)
6. 在UE中使用C++ 中的extern 關鍵字和namespace問題
在UE中使用C++的extern 關鍵字去聲明一個變量是無法使用的责鳍,否則會編譯報錯碾褂。同樣在namespace中,聲明一個變量历葛,使用namespace::變量名去聲明一個變量也是無法在外部使用的斋扰,同樣的編譯報錯 LNK2005:redefined error(vs 報錯結果)。
UE在文檔中說明不是標準的C++(可能他想表達這是他魔改過的C++)啃洋,所以有一些C++ 的語法也是無法在UE中使用的传货。
7. UE 出現(xiàn)exit with code 5,UBT xxxx dylib/dll 編譯錯誤
出現(xiàn)這個的問題有可能是代碼寫錯了宏娄,尤其是一些預編譯的代碼(比如宏定義之類的问裕,或者是在UE中不支持的C++ 語法用到了UE中)出現(xiàn)了錯誤,導致無法編譯成功孵坚,因此也無法生成動態(tài)連接庫粮宛。
8.多版本XCode并存使用
由于新版的UE4.24要求使用Xcode 11 及其以上的版本,所以要同時使用Xcode 11和10卖宠,所以在兩個版本中進行切換巍杈,因此也就需要更Xcode打開的改默認版本,在命令行中輸入
sudo xcode-select -s ~/Xcode.app/Contents/Developer