示例#1
0
        internal static IEnumerator InitializePackage(Core.KernelInitializeData initializeData)
        {
            XLuaManager xluaManager = new XLuaManager();

            Core.Kernel.LuaManager = xluaManager;
            return(xluaManager.InitializeAsync(initializeData));
        }
示例#2
0
        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);
        }