| | |
| | | [HideInInspector] public UIBase parentUI; |
| | | |
| | | // 子UI管理 |
| | | [HideInInspector] public List<UIBase> childrenUI = new List<UIBase>();
|
| | |
|
| | | [HideInInspector] public List<UIBase> childrenUI = new List<UIBase>(); |
| | | |
| | | [Header("所有UI排版应该在此节点内层")] |
| | | [SerializeField] protected RectTransform _rectTransform; //界面默认添加根节点用于表现界面开启关闭动画,或者设置适配用 |
| | | |
| | |
| | | originalPosition = _rectTransform.anchoredPosition;; |
| | | |
| | | } |
| | |
|
| | | if (screenMask != null)
|
| | | |
| | | if (screenMask != null) |
| | | screenMask.transform.SetAsFirstSibling(); |
| | | InitClickEmptySpaceBtn(); |
| | | } |
| | |
| | | if (clickEmptySpaceClose) |
| | | { |
| | | //延迟x帧后可点击,防止点击过快立即关闭了 |
| | | await UniTask.DelayFrame(5); |
| | | btnClickEmptyClose.interactable = true; |
| | | await UniTask.Delay(200); |
| | | btnClickEmptyClose.enabled = true; |
| | | } |
| | | } |
| | | |
| | | private void InitClickEmptySpaceBtn()
|
| | | {
|
| | | if (!clickEmptySpaceClose)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | btnClickEmptyClose = screenMask.GetComponent<Button>();
|
| | |
|
| | | btnClickEmptyClose.AddListener(() =>
|
| | | {
|
| | | if (btnClickEmptyCloseEvent != null)
|
| | | {
|
| | | btnClickEmptyCloseEvent();
|
| | | }
|
| | | else
|
| | | {
|
| | | CloseWindow();
|
| | | }
|
| | | });
|
| | |
|
| | | btnClickEmptyClose.interactable = false;
|
| | | private void InitClickEmptySpaceBtn() |
| | | { |
| | | if (!clickEmptySpaceClose) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | btnClickEmptyClose = screenMask.GetComponent<Button>(); |
| | | |
| | | btnClickEmptyClose.AddListener(() => |
| | | { |
| | | if (btnClickEmptyCloseEvent != null) |
| | | { |
| | | btnClickEmptyCloseEvent(); |
| | | } |
| | | else |
| | | { |
| | | CloseWindow(); |
| | | } |
| | | }); |
| | | |
| | | btnClickEmptyClose.enabled = false; |
| | | } |
| | | |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | if ((clickEmptySpaceClose || openMask) && screenMask == null)
|
| | | {
|
| | | if ((clickEmptySpaceClose || openMask) && screenMask == null) |
| | | { |
| | | Debug.LogError($"界面: {uiName} 缺少遮罩 "); |
| | | return; |
| | | } |
| | |
| | | public void HandleClose() |
| | | { |
| | | // 如果已经在关闭过程中,直接返回 |
| | | if (isClosing) return;
|
| | |
|
| | | if (clickEmptySpaceClose)
|
| | | btnClickEmptyClose.interactable = false; |
| | | if (isClosing) return; |
| | | |
| | | if (clickEmptySpaceClose) |
| | | btnClickEmptyClose.enabled = false; |
| | | |
| | | OnPreClose(); |
| | | |
| | |
| | | // 播放打开动画 |
| | | protected virtual void PlayOpenAnimation() |
| | | { |
| | | |
| | | //禁用交互会引起点透问题, 后续解决可以考虑EventSystem |
| | | canvasGroup.blocksRaycasts = true; |
| | | |
| | | if (openAnimationType == UIAnimationType.None) |
| | | { |
| | |
| | | if (canvasGroup != null) |
| | | { |
| | | canvasGroup.alpha = 0f; |
| | | canvasGroup.blocksRaycasts = false; |
| | | // canvasGroup.blocksRaycasts = false; |
| | | } |
| | | if (_rectTransform != null) |
| | | { |
| | |
| | | if (canvasGroup != null) |
| | | { |
| | | canvasGroup.alpha = 1f; |
| | | canvasGroup.blocksRaycasts = false; |
| | | // canvasGroup.blocksRaycasts = false; |
| | | } |
| | | if (_rectTransform != null) |
| | | { |
| | |
| | | if (canvasGroup != null) |
| | | { |
| | | canvasGroup.alpha = 1f; |
| | | canvasGroup.blocksRaycasts = false; |
| | | // 禁用交互会引起点透问题 |
| | | // canvasGroup.blocksRaycasts = false; |
| | | } |
| | | if (_rectTransform != null) |
| | | { |