UH2S3L15——Lua调用函数(重载)
UH2S3L15——Lua调用函数(重载)
Lua调用C#的重载方法
假设我们要调用下面的方法
1 | public class Lesson6 |
数值参数重载精度问题
对于下面的重载
1 | public int Calc() |
toLua和xLua一样,对重载函数的精度支持不太好,lua中只有Number
一种数值类型,会导致其分不清该使用何种数值重载,
因此不建议使用不同精度的数值类型重载函数
1 | local obj = Lesson6() |
可以看见,obj:Calc(1))
默认调用了float
参数重载
调用out或ref参数重载问题
对于下面的重载
1 | public int Calc(int a, int b) |
toLua会默认调用非out
参数的函数重载
1 | print(obj:Calc(10, 1)) |
如果想要在toLua中使用out
重载,有一个固定套路,就是out
参数传入nil
占位即可
这意味着我们在使用Unity中的一些api中有out
时,我们就可以用nil
占位了
1 | print(obj:Calc(10, 1)) |
但是对于ref
重载:
1 | public int Calc(int a, int b) |
我们就不能传入nil
,因为ref参数传入的值必须初始化,但如果不传入nil
,就会默认使用不带ref
参数的重载
因此,在toLua中,我们无法使用带ref
参数的方法
1 | print(obj:Calc(10, 1)) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!