欢迎光临散文网 会员登陆 & 注册

【UnLua】UE4除了在代码中以外,还可以如何定义宏

2021-12-01 15:11 作者:天空游荡的鱼  | 我要投稿

        最近将已有的用UnLua实现的项目更新到UE5,UnLua也更新到UE5。原来的版本是4.26.2。原本正常的项目,运行时爆出很多错误。提示UClass.Load找不到,local actorArray=TArray(AActor)找不到。经过一番排查,原来是没有加UE4.UClass这个前缀。

        为什么4.26.2可以,UE5却不行呢?肯定是UnLua插件更新了什么内容。在UnLua.lua中有这样一段代码:

全局变量UE4如果没有设置,就使用_G作为UE4

现在出现错误,并且打印出WITH_UE4_NAMESPACE==true,那说明UnLua插件是有设置对应的LuaTable。

    检查C++代码发现WITH_UE4_NAMESPACE的宏定义值为0。

WITH_UE4_NAMESPACE宏定义

        为什么Lua全局对象UE4还会生效呢?

设置Lua全局变量UE4的地方

        这就要说到标题所讲,在UE项目中,还可以怎么定义宏?

        打开UnLua.Build.cs可以看到下面这段代码

在Build.cs文件中定义宏

    通过测试,在PublicDefinitions中可以定义新的宏,并且跟C++代码中是否用宏的定义无关。

【UnLua】UE4除了在代码中以外,还可以如何定义宏的评论 (共 条)

分享到微博请遵守国家法律