Tencent / sluaunreal

lua dev plugin for unreal engine 4 or 5

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

1.x里的CallLuaMember函数在2.x里没有了,是要自己手动添加么?

scriptkitz opened this issue · comments

1.x里的CallLuaMember函数在2.x里没有了。

升级2.x后,ALuaPawn,ALuaCharacter没了。

由于老项目用的1.x,很多蓝图继承自ALuaPawn,ALuaCharacter,
升级2.x导致这些蓝图都打不开了,只好修改slua的源码,加回了这2个类。

升级2.x,由于1.x的蓝图资源太多都调用了CallLuaMember,蓝图有没有批量替换功能,
所以只能自己手动修改slua的源码,把CallLuaMember函数也加回。

这才让老项目的蓝图资源能正常打开。。

所i有升级1.x到2.x必须要手动修改slua的源代码。。这种方式不太友好啊。

而且也不能通过只修改自己项目源码达到目的,
因为老的蓝图引用的 slua_unreal.LuaPawn这种路径,所以只能修改
插件slua的源码。

如果是蓝图API,得重新给加回来,如果是C++代码的话使用CallLuaFunction :
"RET CallLuaFunction(const FString& FunctionName, ARGS&& ...Args)"
它传多参数时使用上更加友好。

“蓝图资源太多都调用了CallLuaMember” 这种我们一般安排人员把它用Lua重写来达到更好的可维护状态,建议项目组开发一个“蓝图转Lua”工具批量去做。

我们项目里面有同学做了类似工具,是基于蓝图节点去做的,可用,但是也要人工修复下。

我个人的看法是做个基于字节码的 蓝图 =》lua 转换工具,应该是可以做到即转即用的

如果是蓝图API,得重新给加回来,如果是C++代码的话使用CallLuaFunction : "RET CallLuaFunction(const FString& FunctionName, ARGS&& ...Args)" 它传多参数时使用上更加友好。

我最开始也是准备调用CallLuaFunction ,但如果用CallLuaFunction<FLuaBPvar>(...), 这样的话不行,
编译报错DeduceType<X>::value未定义,如果用一般类型比如CallLuaFunction<int>(...)就可以,
但这里必须用FLuaBPvar类型才能给蓝图调用,可能要用宏DefDeduceType添加个类型?不确定啊。。

最后先调用了return ULuaBlueprintLibrary::CallToLuaWithArgs(this, FunctionName, Args, TEXT(""));,
还不知道有没问题,反正编译过了。。。

“蓝图资源太多都调用了CallLuaMember” 这种我们一般安排人员把它用Lua重写来达到更好的可维护状态,建议项目组开发一个“蓝图转Lua”工具批量去做。

我们项目里面有同学做了类似工具,是基于蓝图节点去做的,可用,但是也要人工修复下。

我个人的看法是做个基于字节码的 蓝图 =》lua 转换工具,应该是可以做到即转即用的

这也太麻烦了, 我直接修改slua源码,加回原来的名字更快捷😄

嗯,这样兼容过渡也是一种方式,工具开发需要不少时间