16.Lua调用CSharp-重载函数
16.1 知识点
准备工作
启动Lua脚本
LuaManager.Instance.Init();
LuaManager.Instance.Require("Lesson16_Lua调用CSharp_重载函数");
定义有重载函数的测试类
public class Lesson16_Test
{
public int OverloadFunction()
{
return 100;
}
public int OverloadFunction(int a)
{
return a;
}
public float OverloadFunction(float a)
{
return a;
}
public string OverloadFunction(string a)
{
return a;
}
public int OverloadFunction(int a, int b)
{
return a + b;
}
public float OverloadFunction(float a, out int b)
{
b = 999;
return a + b;
}
}
在Lua脚本实例化
--需要添加类到CustomSetting
local test = Lesson16_Test()
重载函数
--虽然Lua不支持重载函数 但是Lua支持调用C#中的重载函数
print(test:OverloadFunction())--100
print(test:OverloadFunction(100, 100))--200
--toLua中的精度表现比xLua好一些
print(test:OverloadFunction(10))--100
print(test:OverloadFunction(10.2))--10.199999809265
print(test:OverloadFunction("123456789"))--123456789
--重载函数中如果有out参数 可以在对应out参数传入nil toLua会自动认为是使用的out重载函数
print(test:OverloadFunction(1000, nil))--1999 999
--如果有ref参数 可能难以正确识别重载 toLua尽量不要使用ref参数
16.2 知识点代码
Lesson16_Lua调用CSharp_重载函数.lua
print('我是Lua脚本 Lesson16_Lua调用CSharp_重载函数')
--需要添加类到CustomSetting
local test = Lesson16_Test()
print("**********知识点一 重载函数************")
--虽然Lua不支持重载函数 但是Lua支持调用C#中的重载函数
print(test:OverloadFunction())--100
print(test:OverloadFunction(100, 100))--200
--toLua中的精度表现比xLua好一些
print(test:OverloadFunction(10))--100
print(test:OverloadFunction(10.2))--10.199999809265
print(test:OverloadFunction("123456789"))--123456789
--重载函数中如果有out参数 可以在对应out参数传入nil toLua会自动认为是使用的out重载函数
print(test:OverloadFunction(1000, nil))--1999 999
--如果有ref参数 可能难以正确识别重载 toLua尽量不要使用ref参数
Lesson16_Lua调用CSharp_重载函数
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson16_Lua调用CSharp_重载函数 : MonoBehaviour
{
void Start()
{
LuaManager.Instance.Init();
LuaManager.Instance.Require("Lesson16_Lua调用CSharp_重载函数");
}
}
public class Lesson16_Test
{
public int OverloadFunction()
{
return 100;
}
public int OverloadFunction(int a)
{
return a;
}
public float OverloadFunction(float a)
{
return a;
}
public string OverloadFunction(string a)
{
return a;
}
public int OverloadFunction(int a, int b)
{
return a + b;
}
public float OverloadFunction(float a, out int b)
{
b = 999;
return a + b;
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com