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); } }
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(); }