public void OnCreateLua() { Bacon.Lua.ILuaPool pool = Maria.Lua.LuaPool.Instance.Cache <Bacon.Lua.ILuaPool>(null); Lua.ILuaClientSock bind = pool.CreateClientSock(); _luaBinding = bind; _luaEnable = _luaBinding.enable(); }
// second step public virtual void StartScript() { _luaenv = new XLua.LuaEnv(); _luaenv.AddBuildin("cjson", Maria.Lua.BuildInInit.LoadCJson); _luaenv.AddBuildin("lpeg", Maria.Lua.BuildInInit.LoadLpeg); _luaenv.AddBuildin("sproto.core", Maria.Lua.BuildInInit.LoadSprotoCore); _luaenv.AddBuildin("ball", Maria.Lua.BuildInInit.LoadBall); _luaenv.AddLoader((ref string filepath) => { UnityEngine.Debug.LogFormat("LUA custom loader {0}", filepath); string[] xpaths = filepath.Split(new char[] { '.' }); string path = "xlua/src"; int idx = 0; while (idx + 1 < xpaths.Length) { path += "/"; path += xpaths[idx]; idx++; } TextAsset file = ABLoader.current.LoadAsset <TextAsset>(path, xpaths[idx] + ".lua"); if (file != null) { return(file.bytes); } else { file = ABLoader.current.LoadAsset <TextAsset>(path + "/lualib", xpaths[idx] + ".lua"); if (file != null) { return(file.bytes); } return(null); } }); _luaenv.DoString(@" require 'main' "); Main main = _luaenv.Global.Get <Main>("main"); Bacon.Lua.ILuaPool pool = main(); Maria.Lua.LuaPool.Instance.Cache <Bacon.Lua.ILuaPool>(pool); }
public void OnCreateLua() { Bacon.Lua.ILuaPool pool = Maria.Lua.LuaPool.Instance.Cache <Bacon.Lua.ILuaPool>(null); _luaContext = pool.CreateContext(); }