Exemple #1
0
        private void _HandleMsg()
        {
            for (int i = 0; i < m_msgList.Count; i++)
            {
                if (m_msgList[i] != null)
                {
                    m_msgList[i].OnRecv();
                }
                m_msgList.RemoveAt(i);
            }

            for (int i = 0; i < m_luaMsgList.Count; i++)
            {
                LuaMsgStruct data = m_luaMsgList[i];
                CSharpCallLua.NetManager_OnRecv(data.id, data.msgLen, data.stream);
                m_luaMsgList.RemoveAt(i);
            }
        }
Exemple #2
0
        public void LuaInit(TextAsset[] luaList)
        {
            InitLuaLib();

            string mainLua = "";

            for (int i = 0; i < luaList.Length; i++)
            {
                TextAsset textAsset = luaList[i];
                if (textAsset.name.Equals("Main.lua"))
                {
                    mainLua = textAsset.text;
                }
                else
                {
                    if (textAsset.name.Contains(".pb"))
                    {
                        m_luaPb.Add(textAsset.bytes);
                    }
                    else
                    {
                        if (m_luaList.ContainsKey(textAsset.name))
                        {
                            Debug.LogError("重复:" + textAsset.name);
                            continue;
                        }
                        m_luaList.Add(textAsset.name, textAsset.text);
                    }
                }
            }

            m_luaScript = m_luaEnv.NewTable();

            LuaTable meta = m_luaEnv.NewTable();

            meta.Set("__index", m_luaEnv.Global);
            m_luaScript.SetMetaTable(meta);
            meta.Dispose();

            m_luaScript.Set("self", this);
            //if (m_injections != null)
            //{
            //    foreach (var injection in m_injections)
            //    {
            //        m_luaScript.Set(injection.name, injection.value);
            //    }
            //}

            // lua代码里头调用require时,参数将会透传给自定义回调函数和原生回调函数
            m_luaEnv.AddLoader((ref string path) =>
            {
                string lastName = path + ".lua";
                if (m_luaList.ContainsKey(lastName))
                {
                    return(Encoding.Default.GetBytes(m_luaList[lastName]));
                }
                else
                {
                    Debug.LogError("Lua加载错误,找不到文件:" + lastName);
                }
                return(null);
            });

            m_luaEnv.DoString(mainLua, "LuaManager", m_luaScript);

            m_luaInit = m_luaScript.Get <Action>("Init");
            m_luaScript.Get("Update", out m_luaUpdate);
            m_luaScript.Get("LateUpdate", out m_luaLateUpdate);
            m_luaScript.Get("Destroy", out m_luaDestroy);

            Lua_Init();
            CSharpCallLua.Init();
        }