接着上一回的接着讲:
案例三:
到这里久终于到了大家最感兴趣的地方了,热更新的价值就在于用脚本语言写逻辑,这样可以实现逻辑的频繁改动而不用每次更新都重新下载。
而这个过程中必然涉及到C#对lua的一个逻辑调用,而这个例子实现的就是C#的函数的调用
核心代码如下:
private string script =
@" function luaFunc(num)
return num + 1
end
test = {}
test.luaFunc = luaFunc
";
LuaFunction func = null;
LuaState lua = null;
void Start ()
{
lua = new LuaState();
lua.Start();
lua.DoString(script);
//Get the function object
func = lua.GetFunction("test.luaFunc");
if (func != null)
{
//有gc alloc
object[] r = func.Call(123456);
Debugger.Log(r[0]);
// no gc alloc
int num = CallFunc();
Debugger.Log(num);
}
lua.CheckTop();
}
int CallFunc()
{
func.BeginPCall();
func.Push(123456);
func.PCall();
int num = (int)func.CheckNumber();
func.EndPCall();
return (in