Ejemplo n.º 1
0
        protected override void OnTick()
        {
            //这里是在逻辑线程执行的tick,渲染线程的在GameControler.cs:TickGame里。
            try
            {
                TimeUtility.SampleClientTick();

                long curTime = TimeUtility.GetLocalMilliseconds();
                if (m_LastLogTime + 10000 < curTime)
                {
                    m_LastLogTime = curTime;
#if DEBUG
                    if (WorldSystem.Instance.IsPvpScene() || WorldSystem.Instance.IsMultiPveScene())
                    {
                        GfxSystem.GfxLog("AverageRoundtripTime:{0}", TimeUtility.AverageRoundtripTime);
                    }

                    if (this.CurActionNum > 10)
                    {
                        GfxSystem.GfxLog("LogicThread.Tick actionNum {0}", this.CurActionNum);
                    }

                    DebugPoolCount((string msg) =>
                    {
                        GfxSystem.GfxLog("LogicActionQueue {0}", msg);
                    });
#endif
                    ClearPool(1024);
                }

                if (!GameControler.IsPaused)
                {
                    NetworkSystem.Instance.Tick();
                    LobbyNetworkSystem.Instance.Tick();
                    PlayerControl.Instance.Tick();
                    WorldSystem.Instance.Tick();
                    ScriptManager.Instance.Tick(false);
                }
                GameControler.LogicLoggerInstance.Tick();
            }
            catch (Exception ex)
            {
                LogSystem.Error("GameLogicThread.Tick throw Exception:{0}\n{1}", ex.Message, ex.StackTrace);
            }
        }