16.Lua调用C#的重载函数

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

×

喜欢就点赞,疼爱就打赏