yyl
2025-08-11 b2d7bb59dc37c7b350786b076ee2f344b7c8911f
Main/System/UIBase/UIBase.cs
@@ -67,8 +67,8 @@
    [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; //界面默认添加根节点用于表现界面开启关闭动画,或者设置适配用
@@ -126,8 +126,8 @@
            originalPosition = _rectTransform.anchoredPosition;;
        }
        if (screenMask != null)
        if (screenMask != null)
            screenMask.transform.SetAsFirstSibling();
        InitClickEmptySpaceBtn();
    }
@@ -142,33 +142,33 @@
        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;
    }
@@ -260,8 +260,8 @@
            return;
        }
        if ((clickEmptySpaceClose || openMask) && screenMask == null)
        {
        if ((clickEmptySpaceClose || openMask) && screenMask == null)
        {
            Debug.LogError($"界面: {uiName} 缺少遮罩 ");
            return;
        }
@@ -298,10 +298,10 @@
    public void HandleClose()
    {
        // 如果已经在关闭过程中,直接返回
        if (isClosing) return;
        if (clickEmptySpaceClose)
            btnClickEmptyClose.interactable = false;
        if (isClosing) return;
        if (clickEmptySpaceClose)
            btnClickEmptyClose.enabled = false;
        OnPreClose();
        
@@ -413,7 +413,8 @@
    // 播放打开动画
    protected virtual void PlayOpenAnimation()
    {
        //禁用交互会引起点透问题, 后续解决可以考虑EventSystem
        canvasGroup.blocksRaycasts = true;
        if (openAnimationType == UIAnimationType.None)
        {
@@ -432,7 +433,7 @@
                if (canvasGroup != null)
                {
                    canvasGroup.alpha = 0f;
                    canvasGroup.blocksRaycasts = false;
                    // canvasGroup.blocksRaycasts = false;
                }
                if (_rectTransform != null)
                {
@@ -444,7 +445,7 @@
                if (canvasGroup != null)
                {
                    canvasGroup.alpha = 1f;
                    canvasGroup.blocksRaycasts = false;
                    // canvasGroup.blocksRaycasts = false;
                }
                if (_rectTransform != null)
                {
@@ -495,7 +496,8 @@
                if (canvasGroup != null)
                {
                    canvasGroup.alpha = 1f;
                    canvasGroup.blocksRaycasts = false;
                    // 禁用交互会引起点透问题
                    // canvasGroup.blocksRaycasts = false;
                }
                if (_rectTransform != null)
                {