From b0a5d4688f1af73b5ad03ccc2df11c9aac1523a9 Mon Sep 17 00:00:00 2001 From: yyl <yyl> Date: 星期二, 29 七月 2025 16:56:23 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts --- Main/System/UIBase/UIBase.cs | 113 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 65 insertions(+), 48 deletions(-) diff --git a/Main/System/UIBase/UIBase.cs b/Main/System/UIBase/UIBase.cs index 38b211d..02d2031 100644 --- a/Main/System/UIBase/UIBase.cs +++ b/Main/System/UIBase/UIBase.cs @@ -9,9 +9,9 @@ public enum UILayer { Static, // 闈欐�乁I 閫傚悎鍋� 鎴樻枟 涓荤晫闈� - Bottom, // 涓荤晫闈� - Mid, // 鍔熻兘绐楀彛 - System, // 缃戠粶寮圭獥/鍏朵粬閲嶈寮圭獥 + Bottom, // 閮ㄥ垎鐣岄潰鐗规畩澶勭悊灞傜骇鐢� + Mid, // 澶ч儴鍒嗗姛鑳界獥鍙i兘鏀捐繖灞傦紝渚夸簬璺宠浆涓婁笅灞傜鐞嗭紙涓�涓晫闈㈠彲浠ュ悓鏃跺瓨鍦ㄥ涓級 + System, // 缃戠粶寮圭獥锛屼俊鎭彁绀虹瓑锛屽叾浠栭噸瑕佸脊绐� Loading, // 鍔犺浇鐣岄潰 } @@ -25,7 +25,7 @@ SlideFromBottom, // 浠庡簳閮ㄦ粦鍏� SlideFromLeft, // 浠庡乏渚ф粦鍏� SlideFromRight, // 浠庡彸渚ф粦鍏� - ScaleOverInOut,// 缂╂斁锛堣秴杩囷級涔嬪悗鍐嶈繑鍥� + ScaleOverInOut,// 缂╂斁鏍规嵁鏇茬嚎 } @@ -40,7 +40,14 @@ [SerializeField] public UILayer uiLayer = UILayer.Mid; [SerializeField][HideInInspector] public string uiName; [SerializeField] public bool isMainUI = false; - [SerializeField] public bool supportParentChildRelation = true; // 鏂板锛氭槸鍚︽敮鎸佺埗瀛愬叧绯� + + // 鏂板锛氭槸鍚︽敮鎸佺埗瀛愬叧绯� + // 鐖跺瓙鍏崇郴:UI鎷ユ湁鐨勪笂涓嬬骇閾惧紡鍏崇郴 + // 鍦ㄩ潪鐗瑰畾鎯呭喌涓� 閮借鎷ユ湁鐖跺瓙鍏崇郴 锛堜竴鑸潵璇村姛鑳介兘瑕佹湁鐖跺瓙鍏崇郴 渚嬪鐨勬槸渚嬪绯荤粺寮圭獥 + // 涓荤晫闈㈣繖绉嶄笉闇�瑕� 鍦ㄥ埗浣淯I浼� 鐩墠鐨勯渶姹傛槸 鍔熻兘鍏ㄩ儴鍋氬湪Middle灞傦級 + // 鎷ユ湁鐖跺瓙鍏崇郴 鍦ㄥ叧闂埗鐣岄潰鐨勬椂鍊� 瀛愮晫闈細杩炲悓涓�璧峰叧闂� 瀛愮晫闈㈡墦寮�鏃� 鐖剁晫闈㈢殑鈥滃洖鍚堟暟鈥濅細鍒锋柊 鍥炲悎鏁拌瑙佹寔涔呭寲鐩稿叧鐨勬敞閲� + // + [SerializeField] public bool supportParentChildRelation = true; // 鎸佷箙鍖栫浉鍏� [SerializeField] public bool isPersistent = false; @@ -49,7 +56,7 @@ // 鍔ㄧ敾鐩稿叧 [SerializeField] public UIAnimationType openAnimationType = UIAnimationType.None; [SerializeField] public UIAnimationType closeAnimationType = UIAnimationType.None; - [SerializeField] protected RectTransform _rectTransform; //鐣岄潰榛樿娣诲姞鏍硅妭鐐圭敤浜庤〃鐜扮晫闈㈠紑鍚叧闂姩鐢� + [SerializeField] protected RectTransform _rectTransform; //鐣岄潰榛樿娣诲姞鏍硅妭鐐圭敤浜庤〃鐜扮晫闈㈠紑鍚叧闂姩鐢伙紝鎴栬�呰缃�傞厤鐢� [SerializeField]/*[HideInInspector]*/ public float animeDuration = 0.2f; [SerializeField]public TweenCurve scaleOverInOutCurve; @@ -59,20 +66,19 @@ [HideInInspector] public int lastUsedRound = 0; [HideInInspector] public UIBase parentUI; - [HideInInspector] public GameObject rootNode; // 鏍硅妭鐐� - // 瀛怳I绠$悊 [HideInInspector] public List<UIBase> childrenUI = new List<UIBase>(); // 鎵撳紑閬僵 [SerializeField] public bool openMask = false; - // 鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰 + // 榛樿鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰 [SerializeField] public bool clickEmptySpaceClose = false; private GameObject screenMask = null; private Button btnClickEmptyClose; + public Action btnClickEmptyCloseEvent = null; //鎻愪緵鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰鐨勫洖璋� // 璺烵neLevelWin鑱斿姩 瀹為檯涓婃槸闇�瑕佺户鎵胯嚜OneLevelWin鎵嶈兘鐢熸晥鐨勫�� 浣跨敤闇�瑕佹敞鎰� int m_FunctionOrder = 0; @@ -111,7 +117,8 @@ // 淇濆瓨鍘熷鍊肩敤浜庡姩鐢� if (_rectTransform != null) { - originalPosition = _rectTransform.anchoredPosition; + originalPosition = _rectTransform.anchoredPosition;; + } ApplySettings(); @@ -137,12 +144,20 @@ //寤惰繜鍒涘缓浼氬鑷村眰绾у湪ScreenMask涔嬩笂 GameObject goBtnESC = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/ClickEmptyCloseMask"), transform); btnClickEmptyClose = goBtnESC.GetComponent<Button>(); - btnClickEmptyClose.AddListener(CloseWindow); btnClickEmptyClose.transform.SetAsFirstSibling(); await UniTask.DelayFrame(5); - btnClickEmptyClose = goBtnESC.GetComponent<Button>(); - btnClickEmptyClose.AddListener(CloseWindow); + btnClickEmptyClose.AddListener(()=> + { + if (btnClickEmptyCloseEvent != null) + { + btnClickEmptyCloseEvent(); + } + else + { + CloseWindow(); + } + }); } } @@ -178,8 +193,9 @@ // 璁剧疆Canvas灞炴�� canvas.overrideSorting = true; - canvas.worldCamera = CameraManager.uiCamera; + + canvas.sortingLayerID = SortingLayer.NameToID("UI"); // 纭繚浣跨敤姝g‘鐨勬帓搴忓眰 // 鑾峰彇鎴栨坊鍔燙anvasGroup缁勪欢 canvasGroup = GetComponent<CanvasGroup>(); @@ -228,6 +244,12 @@ // 鎵撳紑UI public void HandleOpen() { + if (_rectTransform == null) + { + Debug.LogError($"鐣岄潰: {uiName} 闇�瑕佽缃牴鑺傜偣_rectTransform "); + return; + } + OnPreOpen(); // 濡傛灉姝e湪鎾斁鍔ㄧ敾锛屽厛鍋滄 StopCurrentAnimation(); @@ -240,6 +262,10 @@ // 鏍规嵁鍔ㄧ敾绫诲瀷鎾斁鎵撳紑鍔ㄧ敾 PlayOpenAnimation(); + + // // 濡傛灉鍚庣画闇�瑕佺粺涓�澶勭悊鍒樻捣鎴栬�呭皬娓告垙鐨勭晫闈㈤�傞厤闂 + // _rectTransform.offsetMin = new Vector2(0, 10); //涓嬫柟 + // _rectTransform.offsetMax = new Vector2(0, -50); //涓婃柟 OnOpen(); @@ -327,24 +353,15 @@ /// <summary> /// 鎾斁UI鐗规晥 /// </summary> - /// <param name="effectName">鐗规晥璧勬簮鍚嶇О</param> + /// <param name="id">鐗规晥璧勬簮鍚嶇О</param> /// <param name="parent">鐗规晥鐖惰妭鐐癸紝榛樿涓哄綋鍓峌I</param> - /// <param name="autoDestroy">鏄惁鑷姩閿�姣侊紝榛樿涓簍rue</param> - /// <param name="destroyDelay">鑷姩閿�姣佸欢杩熸椂闂达紝榛樿涓�5绉�</param> /// <returns>鐗规晥娓告垙瀵硅薄</returns> - public EffectPlayer PlayUIEffect(int id, Transform parent = null, bool autoDestroy = true, float destroyDelay = 5f) + public UIEffectPlayer PlayUIEffect(int id, Transform parent = null) { // 浣跨敤榛樿鍊� if (parent == null) parent = transform; - - EffectPlayer player = parent.gameObject.AddComponent<EffectPlayer>(); - player.effectId = id; - player.autoDestroy = autoDestroy; - player.destroyDelay = destroyDelay; - player.canvas = canvas; - - return player; + return UIEffectPlayer.CreateEffect(id, parent, false); } #endregion @@ -397,9 +414,9 @@ canvasGroup.alpha = 0f; canvasGroup.blocksRaycasts = false; } - if (canvasScaler != null) + if (_rectTransform != null) { - canvasScaler.scaleFactor = 1f; + _rectTransform.localScale = Vector3.one; } break; @@ -409,9 +426,9 @@ canvasGroup.alpha = 1f; canvasGroup.blocksRaycasts = false; } - if (canvasScaler != null) + if (_rectTransform != null) { - canvasScaler.scaleFactor = 0.3f; + _rectTransform.localScale = Vector3.one * 0.3f; } break; @@ -460,9 +477,9 @@ canvasGroup.alpha = 1f; canvasGroup.blocksRaycasts = false; } - if (canvasScaler != null) + if (_rectTransform != null) { - canvasScaler.scaleFactor = 0.3f; + _rectTransform.localScale = Vector3.one * 0.3f; } break; } @@ -485,7 +502,7 @@ case UIAnimationType.ScaleInOut: if (_rectTransform != null) { - currentAnimation.Append(DOVirtual.Float(0.3f, 1f, animeDuration, (value) => {canvasScaler.scaleFactor = value;}).SetEase(animationEase)); + currentAnimation.Append(DOVirtual.Float(0.3f, 1f, animeDuration, (value) => {_rectTransform.localScale = Vector3.one * value;}).SetEase(animationEase)); } break; @@ -501,19 +518,19 @@ case UIAnimationType.ScaleOverInOut: if (_rectTransform != null) { - if (null == scaleOverInOutCurve) - { - currentAnimation.Append(DOVirtual.Float(0.3f, 1.2f, animeDuration, - (value) => {canvasScaler.scaleFactor = value;}).SetEase(animationEase)); - } - else - { - currentAnimation.Append(DOVirtual.Float(0.3f, 1.2f, animeDuration, - (value) => {canvasScaler.scaleFactor = value;}).SetEase(scaleOverInOutCurve.curve)); - } + float startScale = scaleOverInOutCurve.curve.Evaluate(0f); + _rectTransform.localScale = Vector3.one * startScale; + currentAnimation.Append( + DOTween.To( + () => _rectTransform.localScale.x, + (value) => _rectTransform.localScale = Vector3.one * value, + 1f, + animeDuration + ) + .SetEase(scaleOverInOutCurve.curve) + .OnComplete(() => _rectTransform.localScale = Vector3.one) // 纭繚鏈�缁堝��1姝g‘ + ); - - // currentAnimation.Append(DOVirtual.Float(1.2f, 1f, 0.1f, (value) => {canvasScaler.scaleFactor = value;}).SetEase(scaleOverInOutCurve)); } break; } @@ -563,9 +580,9 @@ canvasGroup.alpha = 1f; canvasGroup.blocksRaycasts = true; } - if (canvasScaler != null) + if (_rectTransform != null) { - canvasScaler.scaleFactor = 1f; + _rectTransform.localScale = Vector3.one; } if (_rectTransform != null) @@ -609,7 +626,7 @@ case UIAnimationType.ScaleOverInOut: if (_rectTransform != null) { - currentAnimation.Append(DOVirtual.Float(1f, 0.3f, animeDuration, (value) => {canvasScaler.scaleFactor = value;}).SetEase(animationEase)); + currentAnimation.Append(DOVirtual.Float(1f, 0.3f, animeDuration, (value) => {_rectTransform.localScale = Vector3.one * value;}).SetEase(animationEase)); } break; -- Gitblit v1.8.0