/// <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); }
/// <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); }