

重载方法调用
-
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();
}
}
运行结果:

img.jpg
注意:
1、直接通过不同的参数类型进行重载函数的访问,例如:
testobj:TestFunc(100)
testobj:TestFunc('hello')
将分别访问整数参数的TestFunc和字符串参数的TestFunc。
2、xlua只一定程度上支持重载函数的调用,因为lua的类型远远不如C#丰富,存在一对多的情况,比如C#的int,float,double都对应于lua的number,上面的例子中TestFunc如果有这些重载参数,第一行将无法区分开来,只能调用到其中一个(生成代码中排前面的那个)