internal void Tick() { try { int id = 0; object msg = null; while ((msg = peer_.PeekLogicMsg(out id)) != null) { //观察者只处理2个消息,进入与退出 Msg_CR_Observer observerMsg = msg as Msg_CR_Observer; if (null != observerMsg) { IsEntered = true; Scene scene = OwnRoom.ActiveScene; if (null != scene) { scene.SyncForNewObserver(this); } LogSys.Log(LOG_TYPE.DEBUG, "Msg_CR_Observer from observer {0}({1})", Guid, Name); } else { Msg_CR_Quit quitMsg = msg as Msg_CR_Quit; if (null != quitMsg) { OwnRoom.DropObserver(this); LogSys.Log(LOG_TYPE.DEBUG, "Msg_CR_Quit from observer {0}({1})", Guid, Name); break; } else { //LogSys.Log(LOG_TYPE.DEBUG, "msg {0} from observer {1}({2})", msg.GetType().Name, Guid, Name); } } } } catch (Exception ex) { LogSys.Log(LOG_TYPE.ERROR, "Exception {0}\n{1}", ex.Message, ex.StackTrace); } }