【XLua】019-Lua访问C#:重载方法调用

【XLua】019-Lua访问C#:重载方法调用_第1张图片

重载方法调用

  • 1、Lua脚本
local DrivenClass = CS.DrivenClass
local testobj = DrivenClass()

--重载方法调用
 testobj:TestFunc(100)
 testobj:TestFunc('hello')

  • 2、C#脚本
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;

[LuaCallCSharp]
public class BaseClass
{
    
}

public struct Param1//结构体参数
{
    public int x;
    public string y;
}

[LuaCallCSharp]
public class DrivenClass : BaseClass
{
   //重载方法
    public void TestFunc(int i)
    {
        Debug.Log("TestFunc(int i):参数为int类型");
    }

    public void TestFunc(string i)
    {
        Debug.Log("TestFunc(string i):参数为string类型");
    }
}


public class _005_LuaCallCSharp : MonoBehaviour
 {

    private LuaEnv env;
    
    void Start ()
    {
        env = new LuaEnv();
        env.DoString("require 'LuaCallCSharp'");
    }
    

    private void Update()
    {
        if(env!=null)
        {
            env.Tick();
        }
    }

    private void OnDestroy()
    {
        env.Dispose();
    }

}

运行结果:


【XLua】019-Lua访问C#:重载方法调用_第2张图片
img.jpg

注意:

1、直接通过不同的参数类型进行重载函数的访问,例如:
testobj:TestFunc(100)
testobj:TestFunc('hello')
将分别访问整数参数的TestFunc和字符串参数的TestFunc。

2、xlua只一定程度上支持重载函数的调用,因为lua的类型远远不如C#丰富,存在一对多的情况,比如C#的int,float,double都对应于lua的number,上面的例子中TestFunc如果有这些重载参数,第一行将无法区分开来,只能调用到其中一个(生成代码中排前面的那个)

你可能感兴趣的:(【XLua】019-Lua访问C#:重载方法调用)