【Bp2Lua】多返回值和Out参数说明
这块比较繁琐,有四部分需要了解:
- U++
- 蓝图
- Lua
- UnLua
最后再解释 Bp2Lua 如何处理,以及后续潜在的风险
Bp2Lua 如何处理
先说结论
- 统一当作多返回值返回
- 特殊处理了
out参数
不在参数列表最后的情况(C++ 函数) - UnLua 本身这里有一些 TODO,可能有风险
- 和默认参数没有关系
蓝图传参和多返回值
- 蓝图有且只有
out参数
这一种返回值的方式
定义函数,多返回值
生成 lua intellisense
U++
- C++ 不支持多返回值,多余的返回值通过
ref参数
传出 - C++ 返回值,函数暴露给蓝图后会给一个默认的名字
ReturnValue
- C++ 和蓝图不同,
out参数
有可能夹在普通参数中间,这时 Lua 里调用,不能忽略out参数
// bp2lua 特殊处理
Lua
不仔细解释,详细看 PIL
- Lua 可以返回多个值,多返回值实际上是 vararg
- 参数当然不支持引用指针,或者ref,out
UnLua
UnLua 支持两种写法,这是 UnLua 处理的,源码位于 FFunctionDesc::PreCall
和 FFunctionDesc::PostCall
,有点复杂