コード例 #1
0
    public void Update()
    {
        if (mListEvent == null)
        {
            mParamIndex = (mParamIndex + 1) % 2;
            mListEvent  = paramArray[mParamIndex];
            UnityEngine.Debug.Log("paramArray:" + paramArray.Length);
        }

        if (mListEvent.Count == 0)
        {
            return;
        }

        List <LogicEvent> oldEvent = mListEvent;

        mParamIndex = (mParamIndex + 1) % 2;
        mListEvent  = paramArray[mParamIndex];

        for (int i = 0; i < oldEvent.Count; ++i)
        {
            LogicEvent le = oldEvent[i];

            List <EventHandler> lh;
            if (!mDicHandler.TryGetValue(le.Event, out lh))
            {
                string logText = "event = " + le.Event.ToString() + " not find Handler";
                UnityEngine.Debug.Log(logText);
                continue;
            }
            for (int j = 0; j < lh.Count; ++j)
            {
                try      //暂时不纠结异常问题
                {
                    lh[j].HandleEvent(le.Event, le);
                }
                catch (System.Exception e)
                {
                    UnityEngine.Debug.Log(le.Event + " " + e.Message);
                }
            }

            if (!le.Locked)
            {
                LogicEvent.DestroyEvent(le);
            }
        }
        oldEvent.Clear();
    }