第四天,继续Slua 的第二个Demo, 这个Demo 演示的主要是将 c# 函数注入到 lua 中并在 lua 中调用,不对的地方还望大佬们指正
// this exported function don't generate stub code if it had MonoPInvokeCallbackAttribute attribute, only register it
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static public int instanceCustom(IntPtr l)
{
Custom self = (Custom)LuaObject.checkSelf(l);
LuaObject.pushValue(l, true);
LuaDLL.lua_pushstring(l, "xiaoming");
LuaDLL.lua_pushstring(l, "hanmeimei");
LuaDLL.lua_pushinteger(l, self.v);
return 4;
}
// this exported function don't generate stub code, only register it
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
[StaticExport]
static public int staticCustom(IntPtr l)
{
LuaObject.pushValue(l, true);
LuaDLL.lua_pushstring(l, vs);
LuaObject.pushObject(l, c);
return 3;
}
public int this[string key]
{
get
{
if (key == "test")
return v;
return 0;
}
set
{
if (key == "test")
{
v = value;
}
}
}
public string getTypeName(Type t)
{
return t.Name;
}
Demo 中展示了四个不一样的函数,前面两个就是标准的注册函数了,注释也给了解释,无需再生成注册用的函数代码,后面两个则没做处理,OK,我们一步一步来:
首先我们在 LuaGenCode.cs 中找到<