internal static IEnumerator InitializePackage(Core.KernelInitializeData initializeData) { XLuaManager xluaManager = new XLuaManager(); Core.Kernel.LuaManager = xluaManager; return(xluaManager.InitializeAsync(initializeData)); }
private IEnumerator InitializeAsync(Core.KernelInitializeData initializeData) { new LuaScriptParser(initializeData.LuaScriptingDefine); initializeData.LuaScriptingDefine = null; #if UNITY_EDITOR if (!initializeData.LoadLuaByAssetDatabaseWhenEditor) #endif { m_FileToCodes = new Dictionary <string, byte[]>(); LuaScriptLoader luaScriptLoader = new LuaScriptLoader(initializeData, m_FileToCodes); yield return(luaScriptLoader); LuaScriptParser.s_Instance.Release(); } m_LuaEnv = new LuaEnv(); m_LuaEnv.AddLoader(CustomLoader); #region add libs m_LuaEnv.AddBuildin("cjson", OpenLuaLibrary.LoadCJson); if (initializeData.LuaLibs != null) { for (int iLib = 0; iLib < initializeData.LuaLibs.Length; iLib++) { LuaLibItem iterLib = initializeData.LuaLibs[iLib]; if (iterLib.Initer is XLua.LuaDLL.lua_CSFunction initer) { m_LuaEnv.AddBuildin(iterLib.Name, initer); } else { MDebug.LogError("XLua", $"Lub lib({iterLib.Name}).Initer not is a lua_CSFunction"); } } } #endregion #region load log if (initializeData.LuaEnableHighPerformanceLog) { m_LuaEnv.AddBuildin("gfloginternal", OpenLuaLibrary.LoadGFLogInternal); Execuret_RequireToGlobalVariable("gfloginternal", "gfloginternal"); } else { GFLogInternalLib.OpenLib(m_LuaEnv.L, "gfloginternal"); } Execuret_RequireToGlobalVariable("gflog", "Common.GFLog"); #endregion GFTimeLib.OpenLib(m_LuaEnv.L, "gftime"); GFEventCenterLib.OpenLib(m_LuaEnv.L, "gfeventcenter"); Execuret_Require("Common.GFEventCenter"); #region start lua ExecuteString(string.Format("require('{0}')", initializeData.LuaEnterFile)); ExecuteString(initializeData.LuaEnterFunction); #endregion SetEnable(true); }