using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using LuaInterface; namespace LuaFramework { public class NetworkManager : Manager { private SocketClient socket; static readonly object m_lockObject = new object(); static Queue> mEvents = new Queue>(); SocketClient SocketClient { get { if (socket == null) socket = new SocketClient(); return socket; } } void Awake() { Init(); } void Init() { SocketClient.OnRegister(); } public void OnInit() { CallMethod("Start"); } public void Unload() { CallMethod("Unload"); } /// /// 执行Lua方法 /// public object[] CallMethod(string func, params object[] args) { return Util.CallMethod("Network", func, args); } ///------------------------------------------------------------------------------------ public static void AddEvent(int _event, ByteBuffer data) { lock (m_lockObject) { mEvents.Enqueue(new KeyValuePair(_event, data)); } } /// /// 交给Command,这里不想关心发给谁。 /// void Update() { if (mEvents.Count > 0) { while (mEvents.Count > 0) { KeyValuePair _event = mEvents.Dequeue(); facade.SendMessageCommand(NotiConst.DISPATCH_MESSAGE, _event); } } } /// /// 发送链接请求 /// public void SendConnect() { SocketClient.SendConnect(); } /// /// 发送SOCKET消息 /// public void SendMessage(ByteBuffer buffer) { SocketClient.SendMessage(buffer); } /// /// 析构函数 /// private void OnDestroy() { SocketClient.OnRemove(); Debug.Log("~NetworkManager was destroy"); } } }