using UnityEngine;
using System.Collections;
using XLua;
public class MyInvokeLua : MonoBehaviour {
//创建一个接口 用于生成 调用函数
[CSharpCallLua]
//这是一个生成调用函数用的标签 生成CSharp调用Lua,加这标签
public interface ICalc {
int Add(int a, int b);
int Mult { get; set; }
}
[CSharpCallLua]
//(1)在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。
//(2)该参数必须标识一个一维数组,但类型不限,对该参数传递null或者0个数目的数组的引用都是合法的*
public delegate ICalc CalcNew(int mult, params string[] arg);
//创建一个元表
private string script = @"
local cal_mt = {
__index = {
Add = function(self, a, b)
return (a + b) * self.Mult
end
}
}
//设置创建函数
Calc = {
New = function(mult, ...)
print(...)
return setmetatable({Mult = mult}, calc_mt)
end
}
";
void Start() {
LuaEnv luaenv = new LuaEnv();
luaenv.DoString(script);
//获得Calc.New方法 转换为CalcNew委托
CalcNew calc_new = luae
腾讯XLua 03-CSharp Invoke Lua
最新推荐文章于 2025-03-11 19:15:00 发布