protected void Awake() { if (!string.IsNullOrEmpty(luaScrpitPath)) { LuaEnv luaEnv = LuaBoot.luaEnv; //_scriptEnv = luaEnv.NewTable(); //LuaTable meta = luaEnv.NewTable(); //meta.Set("__index",luaEnv.Global); //_scriptEnv.SetMetaTable(meta); //meta.Dispose(); //_scriptEnv.Set("self", this); string luaStr = SimpleLoader.LoadLua(luaScrpitPath); // string luaStr = string.Format("require('{0}')",luaScrpitPath); // Debug.Log("lua str is " + luaStr); _scriptEnv = null; object [] ret = luaEnv.DoString(luaStr, "LuaBehaviour"); if (ret != null) { _scriptEnv = ret[0] as LuaTable; _scriptEnv.Set("monobehaviour", this); Action <LuaTable> luaAwake = _scriptEnv.Get <Action <LuaTable> >("Awake"); _scriptEnv.Get("Start", out _luaStart); _scriptEnv.Get("Update", out _luaUpdate); _scriptEnv.Get("OnDestroy", out _luaOnDestroy); _scriptEnv.Get("OnEnable", out _luaOnEnable); _scriptEnv.Get("OnDisable", out _luaOnDisable); if (luaAwake != null) { luaAwake(_scriptEnv); } } } }
static void InitLuaEvn() { _luaEnv.AddLoader((ref string filename) => { string script = SimpleLoader.LoadLua(filename); return(System.Text.Encoding.UTF8.GetBytes(script)); }); }