一、映射到delegate
执行速度快,要写更多代码
- 无参方法
--[Lua--]
function test()
print(111);
end
//C#
using System;
var test = luaEnv.Global.Get<Action>("test");
test();
test = null;
使用后在释放前要讲Action设为空
- 有参数方法
--[Lua--]
function add(a,b)
print(a+b);
end
//C#
var add = luaEnv.Global.Get<Add>("add");
add(3,4);
add = null;
[CSharpCallLua]
delegate void Add(int a, int b);
- 有返回值
--[Lua--]
function add(a,b)
return a+b
end
//C#
var add = luaEnv.Global.Get<Add>("add");
int value= add(45,67);
print(value);
add = null;
[CSharpCallLua]
delegate int Add(int a, int b);
- 多返回值
多返回值通过out,ref来返回
--[Lua--]
function add(a,b)
return a+b,a,b
end
//C#
var add = luaEnv.Global.Get<Add>("add");
int resa, resb;
int value= add(45,67, out resa, out resb);
print(value);
print(resa);
print(resb);
add = null;
[CSharpCallLua]
delegate int Add(int a, int b,out int resa,out int resb);
二、映射到LuaFunction
不用自己写太多代码,但是运行速度慢
--[Lua--]
function add(a,b)
return a+b,a,b
end
//C#
LuaFunction fun = luaEnv.Global.Get<LuaFunction>("add");
var os = fun.Call(3, 4);//调用方法,os是方法的返回值object[]格式的
foreach (object o in os)
{
print(o);
}