

重載方法調(diào)用
-
1、Lua腳本
local DrivenClass = CS.DrivenClass
local testobj = DrivenClass()
--重載方法調(diào)用
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//結(jié)構(gòu)體參數(shù)
{
public int x;
public string y;
}
[LuaCallCSharp]
public class DrivenClass : BaseClass
{
//重載方法
public void TestFunc(int i)
{
Debug.Log("TestFunc(int i):參數(shù)為int類型");
}
public void TestFunc(string i)
{
Debug.Log("TestFunc(string i):參數(shù)為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();
}
}
運(yùn)行結(jié)果:

img.jpg
注意:
1、直接通過不同的參數(shù)類型進(jìn)行重載函數(shù)的訪問,例如:
testobj:TestFunc(100)
testobj:TestFunc('hello')
將分別訪問整數(shù)參數(shù)的TestFunc和字符串參數(shù)的TestFunc。
2、xlua只一定程度上支持重載函數(shù)的調(diào)用,因為lua的類型遠(yuǎn)遠(yuǎn)不如C#豐富,存在一對多的情況,比如C#的int,float,double都對應(yīng)于lua的number,上面的例子中TestFunc如果有這些重載參數(shù),第一行將無法區(qū)分開來,只能調(diào)用到其中一個(生成代碼中排前面的那個)