/// <summary>
    /// 透明Mask,用于禁止用户点击的
    /// </summary>
    /// <param name="closeTime">关闭时间</param>
    /// <param name="closeCallBack">关闭回调</param>
    /// <returns></returns>
    public static GameObject OpenUIMask(float closeTime, System.Action closeCallBack = null)
    {
        Transform  parentCanvas = GameObject.Find("Canvas").transform;
        GameObject maskObj      = new GameObject("UIMask");
        Image      maskImg      = maskObj.AddComponent <Image>();

        maskObj.transform.SetParent(parentCanvas);
        maskObj.transform.SetAsLastSibling();

        //赋值
        maskImg.color = Color.clear;
        maskImg.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, 0);
        maskImg.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0, 0);
        maskImg.rectTransform.anchorMin = Vector2.zero;
        maskImg.rectTransform.anchorMax = Vector2.one;

        TimerTool.OpenOnce(closeTime, () => {
            if (maskObj != null)
            {
                Destroy(maskObj);
            }
            if (closeCallBack != null)
            {
                closeCallBack();
            }
        });
        return(maskObj);
    }
Exemple #2
0
        /// <summary>
        /// 计时器开启一次
        /// </summary>
        /// <param name="key">下标</param>
        /// <param name="time">时间</param>
        /// <param name="func">回调</param>
        public void TimerOpenOnce(int key, float time, System.Action func)
        {
            if (key < 0)
            {
                return;
            }

            if (key < TimerList.Length && TimerList[key] == null)
            {
                TimerTool timer = TimerTool.OpenOnce(time, func);
                TimerList[key] = timer;
            }
            else
            {
                TimerList[key].StatusOpenOnce(time, func);
            }
        }
    /// <summary>
    /// 实现黑幕/白幕渐变的
    /// </summary>
    /// <param name="delay">延迟播放</param>
    /// <param name="closeTimeDelta">变黑时间间隔</param>
    /// <param name="openTimeDelta">变亮时间间隔</param>
    /// <returns></returns>
    public static GameObject OpenGradualChangeMask(float delay = 0, float closeTimeDelta = 1, float openTimeDelta = 1f, bool isWhite = false, System.Action callBack = null)
    {
        Transform   parentCanvas     = GameObject.Find("Canvas").transform;
        GameObject  maskObj          = new GameObject("BlackMask");
        Image       maskImg          = maskObj.AddComponent <Image>();
        CanvasGroup ConnectLevelMask = maskObj.AddComponent <CanvasGroup>();

        maskObj.transform.SetParent(parentCanvas);
        maskObj.transform.SetAsLastSibling();

        //赋值
        if (isWhite)
        {
            maskImg.color = Color.white;
        }
        else
        {
            maskImg.color = Color.black;
        }
        maskImg.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, 0);
        maskImg.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0, 0);
        maskImg.rectTransform.anchorMin = Vector2.zero;
        maskImg.rectTransform.anchorMax = Vector2.one;

        maskImg.transform.localScale = Vector3.one;
        //屏幕效果
        ConnectLevelMask.alpha = 0;
        TimerTool.OpenOnce(delay, () => {
            Sequence sequenceTw = DOTween.Sequence();
            sequenceTw.Append(ConnectLevelMask.DOFade(1, closeTimeDelta));
            sequenceTw.Append(ConnectLevelMask.DOFade(0, openTimeDelta)).OnComplete(() => {
                if (maskObj != null)
                {
                    Destroy(maskObj);
                }
                if (callBack != null)
                {
                    callBack();
                }
            });
        });
        return(maskObj);
    }