static public void Init(bool forceReset = false) { if (forceReset) { Clear(); } if (_inited) { return; } using (ExeTimer.GetEndIndent("LuaManagerImpl.Init", x => _PerfLogger.Info(x))) { luaEnv = new LuaEnv(); //jit interpreter if (LuaManager.LUAJIT_ENABLE) { luaEnv.DoString("\nif jit then\n\n jit.off();jit.flush()\n\nend"); } //load lua base files foreach (var f in files) { luaEnv.DoString(LoadLua(LuaManager.LUA_ROOT_MENU + f.Replace(".lua", "")), f); } _inited = true; LoadLuaFiles(); //ConfigManager.Init(); HSLogManager.GetLogger("Booter").Info("lua vm 装载成功"); } }
static public void Clear() { _inited = false; //ConfigManager.Reset(); if (_cachedFunc != null && _cachedFunc.Count > 0) { foreach (var cf in _cachedFunc.Values) { cf.Dispose(); //Added By George } _cachedFunc.Clear(); //HSUtils.Log("Destroying lua cachedFunc finished."); } if (luaEnv != null) { luaEnv.FullGc(); //HSUtils.Log ("★★★Destroying lua state.."); luaEnv = null; HSLogManager.GetLogger("Booter").Debug("★★★★ Destroying lua state finished★★★★ "); } ClearLuaMapper(); }
/// <summary> /// 除了注入、注册、或者绑定外不会有任何代码运行。 /// </summary> public static void ColdBind() { _OTRH.TryRunOnce(() => { Debug.Log("↓↓↓↓↓↓↓↓↓ Game.ColdBind ↓↓↓↓↓↓↓↓↓↓↓"); HSBootApp.IceBind(); IceBind(); HSBootApp.ColdBind(ConStr.GLOBAL_DESKEY, #if UNITY_EDITOR null, #else HSConfigTableInitHelperPhone.Create(), #endif ConStr.PrefabPoolConfig); Debug.Log("↑↑↑↑↑↑↑↑↑ Game.ColdBind ↑↑↑↑↑↑↑↑↑↑↑"); HSLogManager.GetLogger("Booter").Info("ColdBind完成。"); }); }