1 字符串调用luaFunc :DoString
public class CallLuaFunction : MonoBehaviour { private string script = @" function luaFunc(num) return num + 1 end test = {} test.luaFunc = luaFunc "; LuaFunction luaFunc = null; LuaState lua = null; string tips = null; void Start () { new LuaResLoader(); lua = new LuaState(); lua.Start(); DelegateFactory.Init(); lua.DoString(script); //Get the function object luaFunc = lua.GetFunction("test.luaFunc"); if (luaFunc != null) { int num = luaFunc.Invoke<int, int>(123456); Debugger.Log("generic call return: {0}", num); num = CallFunc(); Debugger.Log("expansion call return: {0}", num); Func<int, int> Func = luaFunc.ToDelegateint, int>>(); num = Func(123456); Debugger.Log("Delegate call return: {0}", num); num = lua.Invoke<int, int>("test.luaFunc", 123456, true); Debugger.Log("luastate call return: {0}", num); } lua.CheckTop(); } void OnDestroy() { if (luaFunc != null) { luaFunc.Dispose(); luaFunc = null; } lua.Dispose(); lua = null; } int CallFunc() { luaFunc.BeginPCall(); luaFunc.Push(123456); luaFunc.PCall(); int num = (int)luaFunc.CheckNumber(); luaFunc.EndPCall(); return num; } }
2 执行lua文件
lua = new LuaState();
lua.Start();
//如果移动了ToLua目录,自己手动修复吧,只是例子就不做配置了
string fullPath = Application.dataPath + "\\LuaFramework/ToLua/Examples/02_ScriptsFromFile";
lua.AddSearchPath(fullPath);
lua.DoFile("ScriptsFromFile.lua");
//lua.Require("ScriptsFromFile"); Require 只执行一次
lua.Collect();
lua.CheckTop();
3
Original: https://www.cnblogs.com/pengyingh/p/7324874.html
Author: pengyingh
Title: tolua杂记
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546769/
转载文章受原作者版权保护。转载请注明原作者出处!