【UnLua】UE4除了在代碼中以外,還可以如何定義宏
????? ? 最近將已有的用UnLua實現(xiàn)的項目更新到UE5,UnLua也更新到UE5。原來的版本是4.26.2。原本正常的項目,運行時爆出很多錯誤。提示UClass.Load找不到,local actorArray=TArray(AActor)找不到。經(jīng)過一番排查,原來是沒有加UE4.UClass這個前綴。
????????為什么4.26.2可以,UE5卻不行呢?肯定是UnLua插件更新了什么內(nèi)容。在UnLua.lua中有這樣一段代碼:

現(xiàn)在出現(xiàn)錯誤,并且打印出WITH_UE4_NAMESPACE==true,那說明UnLua插件是有設(shè)置對應(yīng)的LuaTable。
????檢查C++代碼發(fā)現(xiàn)WITH_UE4_NAMESPACE的宏定義值為0。

? ??????為什么Lua全局對象UE4還會生效呢?

????????這就要說到標(biāo)題所講,在UE項目中,還可以怎么定義宏?
????????打開UnLua.Build.cs可以看到下面這段代碼

????通過測試,在PublicDefinitions中可以定義新的宏,并且跟C++代碼中是否用宏的定義無關(guān)。
標(biāo)簽: