Beispiel #1
0
    /// <summary>
    /// 创建帧延时触发器
    /// </summary>
    /// <param name="frameDelay">延时帧数</param>
    /// <param name="onTrigger">回调函数</param>
    /// <param name="args">回调参数</param>
    /// <returns></returns>
    public static void CreateFrameTrigger(int frameDelay, OnTrigger onTrigger, params object[] args)
    {
        FrameTriggerInfo ftInfo = new FrameTriggerInfo();

        ftInfo.iFrameDelay = frameDelay < 1 ? 1 : frameDelay;
        ftInfo.onTrigger   = onTrigger;
        ftInfo.args        = args;
        mFrameTrigger.Add(ftInfo);
    }
Beispiel #2
0
    /// <summary>
    /// 逐帧更新按帧延时回调
    /// </summary>
    public static void UpdateFrameTrigger()
    {
        try
        {
            if (mFrameTrigger == null)
            {
                return;
            }

            for (int i = mFrameTrigger.Count - 1; i >= 0; --i)
            {
                FrameTriggerInfo ftInfo = mFrameTrigger[i] as FrameTriggerInfo;

                if (ftInfo == null)
                {
                    mFrameTrigger.RemoveAt(i);
                    continue;
                }
                else
                {
                    ftInfo.iFrameDelay--;
                    // 因为是在LateUpdate逻辑中,所以还在本帧的时候就会进行判断
                    // 此处需要先判定>=0
                    if (ftInfo.iFrameDelay >= 0)
                    {
                        continue;
                    }

                    mFrameTrigger.RemoveAt(i);
                    if (ftInfo != null && ftInfo.onTrigger != null)
                    {
                        try
                        {
                            ftInfo.onTrigger(ftInfo.args);
                        }
                        catch (System.Exception e)
                        {
                            LogSystem.LogError("UpdateFrameTrigger : ", e.ToString());
                        }
                    }
                }
            }
        }
        catch (System.Exception ex)
        {
            LogSystem.LogError(ex.ToString());
        }
    }