sluaunreal
sluaunreal copied to clipboard
1.x里的CallLuaMember函数在2.x里没有了,是要自己手动添加么?
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源码,加回原来的名字更快捷😄
嗯,这样兼容过渡也是一种方式,工具开发需要不少时间