From 39001a600fcae2bcf27c225df8752d75fb92fef4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 31 十月 2025 11:18:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/System/UIBase/UIBase.cs | 436 +++++++++++++++++++++++++++---------------------------
1 files changed, 219 insertions(+), 217 deletions(-)
diff --git a/Main/System/UIBase/UIBase.cs b/Main/System/UIBase/UIBase.cs
index 35878f9..0f76fe6 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,// 缂╂斁鏍规嵁鏇茬嚎
}
@@ -39,17 +39,22 @@
// UI鍩烘湰灞炴��
[SerializeField] public UILayer uiLayer = UILayer.Mid;
[SerializeField][HideInInspector] public string uiName;
- [SerializeField] public bool isMainUI = false;
- [SerializeField] public bool supportParentChildRelation = true; // 鏂板锛氭槸鍚︽敮鎸佺埗瀛愬叧绯�
+ [SerializeField] public bool isMainUI = false; //鍚屾椂鍕鹃�塻upportParentChildRelation 浼氬綋浣滄柊鐨勭埗鑺傜偣锛屼絾涓嶄綔涓哄瓙鑺傜偣
+
+ // 鏄惁鏀寔鐖跺瓙鍏崇郴锛屽嵆UI鎷ユ湁鐨勪笂涓嬬骇閾惧紡鍏崇郴
+ // 鎷ユ湁鐖跺瓙鍏崇郴 鍦ㄥ叧闂埗鐣岄潰鐨勬椂鍊� 瀛愮晫闈細杩炲悓涓�璧峰叧闂� 瀛愮晫闈㈡墦寮�鏃�
+ // 鍦ㄩ潪鐗瑰畾鎯呭喌涓� 閮借鎷ユ湁鐖跺瓙鍏崇郴 锛堜竴鑸潵璇村姛鑳介兘瑕佹湁鐖跺瓙鍏崇郴 渚嬪鐨勬槸渚嬪绯荤粺寮圭獥
+ // 闄勫姞璇存槑锛氬姛鑳藉熀鏈仛鍦∕iddle灞�
+ [SerializeField] public bool supportParentChildRelation = true;
// 鎸佷箙鍖栫浉鍏�
[SerializeField] public bool isPersistent = false;
[SerializeField][HideInInspector] public int maxIdleRounds = 20;
+
// 鍔ㄧ敾鐩稿叧
[SerializeField] public UIAnimationType openAnimationType = UIAnimationType.None;
[SerializeField] public UIAnimationType closeAnimationType = UIAnimationType.None;
- [SerializeField] protected RectTransform _rectTransform; //鐣岄潰榛樿娣诲姞鏍硅妭鐐圭敤浜庤〃鐜扮晫闈㈠紑鍚叧闂姩鐢�
[SerializeField]/*[HideInInspector]*/ public float animeDuration = 0.2f;
[SerializeField]public TweenCurve scaleOverInOutCurve;
@@ -59,20 +64,25 @@
[HideInInspector] public int lastUsedRound = 0;
[HideInInspector] public UIBase parentUI;
- [HideInInspector] public GameObject rootNode; // 鏍硅妭鐐�
-
// 瀛怳I绠$悊
[HideInInspector] public List<UIBase> childrenUI = new List<UIBase>();
+ [Header("鎵�鏈塙I鎺掔増搴旇鍦ㄦ鑺傜偣鍐呭眰")]
+ [SerializeField] protected RectTransform _rectTransform; //鐣岄潰榛樿娣诲姞鏍硅妭鐐圭敤浜庤〃鐜扮晫闈㈠紑鍚叧闂姩鐢伙紝鎴栬�呰缃�傞厤鐢�
+
+ //閬僵缁勪欢鍦ㄧ晫闈㈠紑鍙戜腑鐢熸垚锛岄伄缃╁紑鍏冲拰鐐瑰嚮绌虹櫧涓哄叾涓殑缁勪欢鐗规��
// 鎵撳紑閬僵
+ [Header("閬僵(閫忔槑)寮�鍏�")]
[SerializeField] public bool openMask = false;
- // 鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰
+ // 榛樿鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰
+ [Header("鐐瑰嚮绌虹櫧鍏抽棴")]
[SerializeField] public bool clickEmptySpaceClose = false;
- private GameObject screenMask = null;
+ public GameObject screenMask = null;
private Button btnClickEmptyClose;
+ public Action btnClickEmptyCloseEvent = null; //鎻愪緵鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰鐨勫洖璋�
// 璺烵neLevelWin鑱斿姩 瀹為檯涓婃槸闇�瑕佺户鎵胯嚜OneLevelWin鎵嶈兘鐢熸晥鐨勫�� 浣跨敤闇�瑕佹敞鎰�
int m_FunctionOrder = 0;
@@ -95,34 +105,54 @@
protected Vector3 originalPosition;
protected Sequence currentAnimation;
- private CanvasScaler canvasScaler;
+ public CanvasScaler canvasScaler
+ {
+ get;
+ private set;
+ }
+ public const int SafeHeightUp = 50;
+ public const int SafeHeightDown = 30;
#endregion
#region Unity鐢熷懡鍛ㄦ湡
protected virtual void Awake()
{
- // 闃叉鏈変汉涓嶅啓base.InitComponent寮曞彂閿欒 鎵�浠ユ媶鍒�
- InitComponentInternal();
- // 鍦ˋwake涓繘琛屽熀鏈垵濮嬪寲
- InitComponent();
+ try
+ {
+ InitComponentInternal();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨処nitComponentInternal鎶ラ敊: {e.StackTrace}");
+ }
+
+ try
+ {
+ InitComponent();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨処nitComponent鎶ラ敊: {e.StackTrace}");
+ }
// 淇濆瓨鍘熷鍊肩敤浜庡姩鐢�
if (_rectTransform != null)
{
+ if (Screen.height / Screen.width > 1.8)//瀹藉睆闇�瑕侀�傞厤
+ {
+ //涓婁笅鍚勯棿闅擲afeWidth
+ _rectTransform.offsetMax = new Vector2(0, -SafeHeightUp); //涓�
+ _rectTransform.offsetMin = new Vector2(0, SafeHeightDown); //涓�
+ }
originalPosition = _rectTransform.anchoredPosition;
}
- ApplySettings();
-
- if (openMask)
- {
- screenMask = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/ScreenMask"), transform);
- screenMask.transform.localScale = Vector3.one;
- screenMask.transform.localPosition = Vector3.zero;
+ if (screenMask != null)
screenMask.transform.SetAsFirstSibling();
- }
+ InitClickEmptySpaceBtn();
+
}
protected virtual void Start()
@@ -130,20 +160,38 @@
// 瀛愮被鍙互閲嶅啓姝ゆ柟娉曡繘琛岄澶栧垵濮嬪寲
}
- protected async UniTask ApplySettings()
+ protected async UniTask ApplyClickEmptySpaceClose()
{
if (clickEmptySpaceClose)
{
- //寤惰繜鍒涘缓浼氬鑷村眰绾у湪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);
+ //寤惰繜x甯у悗鍙偣鍑�,闃叉鐐瑰嚮杩囧揩绔嬪嵆鍏抽棴浜�
+ 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.enabled = false;
}
@@ -178,8 +226,10 @@
// 璁剧疆Canvas灞炴��
canvas.overrideSorting = true;
-
canvas.worldCamera = CameraManager.uiCamera;
+ canvas.pixelPerfect = false;
+
+ canvas.sortingLayerID = SortingLayer.NameToID("UI"); // 纭繚浣跨敤姝g‘鐨勬帓搴忓眰
// 鑾峰彇鎴栨坊鍔燙anvasGroup缁勪欢
canvasGroup = GetComponent<CanvasGroup>();
@@ -195,6 +245,9 @@
}
canvasScaler = GetComponent<CanvasScaler>();
+ canvasScaler.referenceResolution = Constants.DESIGN_RESOLUTION;
+ canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
+ canvasScaler.matchWidthOrHeight = 0;
}
// 鑾峰彇蹇呰鐨勭粍浠�
@@ -225,22 +278,61 @@
// 鎵撳紑UI
public void HandleOpen()
{
- OnPreOpen();
- // 濡傛灉姝e湪鎾斁鍔ㄧ敾锛屽厛鍋滄
+ if (_rectTransform == null)
+ {
+ Debug.LogError($"鐣岄潰: {uiName} 闇�瑕佽缃牴鑺傜偣_rectTransform ");
+ return;
+ }
+
+ if ((clickEmptySpaceClose || openMask) && screenMask == null)
+ {
+ Debug.LogError($"鐣岄潰: {uiName} 缂哄皯閬僵 ");
+ return;
+ }
+
+ try
+ {
+ OnPreOpen();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨凮nPreOpen鎶ラ敊: {e.StackTrace}");
+ }
+
StopCurrentAnimation();
- // 閲嶇疆鍏抽棴鏍囪
isClosing = false;
-
gameObject.SetActive(true);
isActive = true;
- // 鏍规嵁鍔ㄧ敾绫诲瀷鎾斁鎵撳紑鍔ㄧ敾
PlayOpenAnimation();
- OnOpen();
+ // // 濡傛灉鍚庣画闇�瑕佺粺涓�澶勭悊鍒樻捣鎴栬�呭皬娓告垙鐨勭晫闈㈤�傞厤闂
+ // _rectTransform.offsetMin = new Vector2(0, 10); //涓嬫柟
+ // _rectTransform.offsetMax = new Vector2(0, -50); //涓婃柟
- ExecuteNextFrame(NextFrameAfterOpen);
+ try
+ {
+ OnOpen();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨凮nOpen鎶ラ敊: {e.StackTrace}");
+ }
+
+ ApplyClickEmptySpaceClose();
+
+ ExecuteNextFrame(() =>
+ {
+ try
+ {
+ NextFrameAfterOpen();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨凬extFrameAfterOpen鎶ラ敊: {e.StackTrace}");
+ }
+ });
}
protected virtual void NextFrameAfterOpen()
@@ -253,32 +345,50 @@
{
// 濡傛灉宸茬粡鍦ㄥ叧闂繃绋嬩腑锛岀洿鎺ヨ繑鍥�
if (isClosing) return;
-
- OnPreClose();
-
- // 濡傛灉姝e湪鎾斁鍔ㄧ敾锛屽厛鍋滄
+
+ if (clickEmptySpaceClose)
+ btnClickEmptyClose.enabled = false;
+
+ try
+ {
+ OnPreClose();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨凮nPreClose鎶ラ敊: {e.StackTrace}");
+ }
+
StopCurrentAnimation();
- // 璁剧疆鍏抽棴鏍囪
isClosing = true;
isActive = false;
-
- // 绂佺敤浜や簰浣嗕繚鎸佸彲瑙�
+
if (canvasGroup != null)
{
canvasGroup.blocksRaycasts = false;
}
- // 鏍规嵁鍔ㄧ敾绫诲瀷鎾斁鍏抽棴鍔ㄧ敾
PlayCloseAnimation();
- // 璋冪敤鍏抽棴鍥炶皟
- OnClose();
-
- // 濡傛灉娌℃湁鍏抽棴鍔ㄧ敾锛岀洿鎺ョ鐢ㄦ父鎴忓璞�
+ try
+ {
+ OnClose();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨凮nClose鎶ラ敊: {e.StackTrace}");
+ }
+
if (closeAnimationType == UIAnimationType.None)
{
- CompleteClose();
+ try
+ {
+ CompleteClose();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨凜ompleteClose鎶ラ敊: {e.StackTrace}");
+ }
}
// 鍚﹀垯鍦ㄥ姩鐢诲畬鎴愬悗绂佺敤娓告垙瀵硅薄锛堝湪PlayCloseAnimation涓鐞嗭級
}
@@ -293,6 +403,12 @@
public virtual void CloseWindow()
{
UIManager.Instance.CloseWindow(this, false);
+ }
+
+ public async UniTask DelayCloseWindow(int delayTime = 30)
+ {
+ await UniTask.Delay(delayTime);
+ CloseWindow();
}
// 鍒锋柊UI
@@ -324,148 +440,27 @@
/// <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 GameObject 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;
-
- EffectConfig effectCfg = EffectConfig.Get(id);
- if (null == effectCfg)
+ return UIEffectPlayer.CreateEffect(id, parent, false);
+ }
+
+ public int GetSortingOrder()
+ {
+ if (null != canvas)
{
- return null;
+ return canvas.sortingOrder;
}
- // 鍔犺浇鐗规晥璧勬簮
- var effectPrefab = ResManager.Instance.LoadAsset<GameObject>("UIEffect/" + effectCfg.packageName, effectCfg.fxName);
- if (effectPrefab == null)
- {
- Debug.LogError($"鍔犺浇UI鐗规晥澶辫触: {effectCfg.packageName}");
- return null;
- }
-
- // 瀹炰緥鍖栫壒鏁�
- GameObject effectObj = Instantiate(effectPrefab, parent);
- effectObj.name = $"Effect_{effectCfg.packageName}";
-
- // 娣诲姞鐗规晥绌块�忛樆鎸″櫒
- EffectPenetrationBlocker blocker = effectObj.AddComponent<EffectPenetrationBlocker>();
- blocker.parentCanvas = canvas;
-
- // 寤惰繜涓�甯ф墠鐢熸晥
- this.DelayFrame(blocker.UpdateSortingOrder);
-
- // blocker.UpdateSortingOrder();
-
- // 鑷姩閿�姣�
- if (autoDestroy)
- {
- Destroy(effectObj, destroyDelay);
- }
-
- return effectObj;
+ return 0;
}
- /// <summary>
- /// 鍦ㄤ袱涓猆I鍏冪礌涔嬮棿鎾斁鐗规晥锛堟寜鐓ortingOrder鐨勪腑闂村�硷級
- /// </summary>
- /// <param name="effectName">鐗规晥璧勬簮鍚嶇О</param>
- /// <param name="frontElement">鍓嶆櫙UI鍏冪礌锛圛mage鎴朢awImage锛�</param>
- /// <param name="backElement">鑳屾櫙UI鍏冪礌锛圛mage鎴朢awImage锛�</param>
- /// <param name="autoDestroy">鏄惁鑷姩閿�姣侊紝榛樿涓簍rue</param>
- /// <param name="destroyDelay">鑷姩閿�姣佸欢杩熸椂闂达紝榛樿涓�5绉�</param>
- /// <returns>鐗规晥娓告垙瀵硅薄</returns>
- public async UniTask<GameObject> PlayEffectBetweenUIElements(string effectName, Graphic frontElement, Graphic backElement, bool autoDestroy = true, float destroyDelay = 5f)
- {
- if (frontElement == null || backElement == null)
- {
- Debug.LogError("鍓嶆櫙鎴栬儗鏅疷I鍏冪礌涓虹┖");
- return null;
- }
-
- // 纭繚UI鍏冪礌鍦ㄥ綋鍓峌IBase鐨凜anvas涓�
- if (frontElement.canvas != canvas || backElement.canvas != canvas)
- {
- Debug.LogError("UI鍏冪礌涓嶅湪褰撳墠UIBase鐨凜anvas涓�");
- return null;
- }
-
- // 鍔犺浇鐗规晥璧勬簮
- GameObject effectPrefab = ResManager.Instance.LoadAsset<GameObject>("UIEffect", effectName);
- if (effectPrefab == null)
- {
- Debug.LogError($"鍔犺浇UI鐗规晥澶辫触: {effectName}");
- return null;
- }
-
- // 鍒涘缓涓�涓柊鐨凣ameObject浣滀负鐗规晥瀹瑰櫒
- GameObject container = new GameObject($"EffectContainer_{effectName}");
- container.transform.SetParent(transform, false);
-
- // 璁剧疆瀹瑰櫒浣嶇疆
- RectTransform containerRect = container.AddComponent<RectTransform>();
- containerRect.anchorMin = new Vector2(0.5f, 0.5f);
- containerRect.anchorMax = new Vector2(0.5f, 0.5f);
- containerRect.pivot = new Vector2(0.5f, 0.5f);
- containerRect.anchoredPosition = Vector2.zero;
- containerRect.sizeDelta = new Vector2(100, 100); // 榛樿澶у皬锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
-
- // 鑾峰彇鍓嶆櫙鍜岃儗鏅厓绱犵殑siblingIndex
- int frontIndex = frontElement.transform.GetSiblingIndex();
- int backIndex = backElement.transform.GetSiblingIndex();
-
- // 璁剧疆鐗规晥瀹瑰櫒鐨剆iblingIndex鍦ㄤ袱鑰呬箣闂�
- if (frontIndex > backIndex)
- {
- // 鍓嶆櫙鍦ㄨ儗鏅箣鍚庯紝鐗规晥搴旇鍦ㄤ腑闂�
- container.transform.SetSiblingIndex((frontIndex + backIndex) / 2 + 1);
- }
- else
- {
- // 鑳屾櫙鍦ㄥ墠鏅箣鍚庯紝鐗规晥搴旇鍦ㄤ腑闂�
- container.transform.SetSiblingIndex((frontIndex + backIndex) / 2);
- }
-
- // 瀹炰緥鍖栫壒鏁�
- GameObject effectObj = Instantiate(effectPrefab, container.transform);
- effectObj.name = $"Effect_{effectName}";
-
- // 娣诲姞鐗规晥绌块�忛樆鎸″櫒
- EffectPenetrationBlocker blocker = effectObj.AddComponent<EffectPenetrationBlocker>();
-
- // 鐩存帴璁剧疆鐗规晥娓叉煋鍣ㄧ殑鎺掑簭椤哄簭
- Renderer[] renderers = effectObj.GetComponentsInChildren<Renderer>(true);
- foreach (Renderer renderer in renderers)
- {
- renderer.sortingOrder = canvas.sortingOrder;
- renderer.sortingLayerName = canvas.sortingLayerName;
- }
-
- // 璁剧疆绮掑瓙绯荤粺娓叉煋鍣ㄧ殑鎺掑簭椤哄簭
- ParticleSystem[] particleSystems = effectObj.GetComponentsInChildren<ParticleSystem>(true);
- foreach (ParticleSystem ps in particleSystems)
- {
- ParticleSystemRenderer psRenderer = ps.GetComponent<ParticleSystemRenderer>();
- if (psRenderer != null)
- {
- psRenderer.sortingOrder = canvas.sortingOrder;
- psRenderer.sortingLayerName = canvas.sortingLayerName;
- }
- }
-
- // 鑷姩閿�姣�
- if (autoDestroy)
- {
- Destroy(container, destroyDelay);
- }
-
- return effectObj;
- }
#endregion
public bool raycastTarget
@@ -495,7 +490,8 @@
// 鎾斁鎵撳紑鍔ㄧ敾
protected virtual void PlayOpenAnimation()
{
-
+ //绂佺敤浜や簰浼氬紩璧风偣閫忛棶棰�, 鍚庣画瑙e喅鍙互鑰冭檻EventSystem
+ canvasGroup.blocksRaycasts = true;
if (openAnimationType == UIAnimationType.None)
{
@@ -514,11 +510,11 @@
if (canvasGroup != null)
{
canvasGroup.alpha = 0f;
- canvasGroup.blocksRaycasts = false;
+ // canvasGroup.blocksRaycasts = false;
}
- if (canvasScaler != null)
+ if (_rectTransform != null)
{
- canvasScaler.scaleFactor = 1f;
+ _rectTransform.localScale = Vector3.one;
}
break;
@@ -526,11 +522,11 @@
if (canvasGroup != null)
{
canvasGroup.alpha = 1f;
- canvasGroup.blocksRaycasts = false;
+ // canvasGroup.blocksRaycasts = false;
}
- if (canvasScaler != null)
+ if (_rectTransform != null)
{
- canvasScaler.scaleFactor = 0.3f;
+ _rectTransform.localScale = Vector3.one * 0.3f;
}
break;
@@ -577,11 +573,12 @@
if (canvasGroup != null)
{
canvasGroup.alpha = 1f;
- canvasGroup.blocksRaycasts = false;
+ // 绂佺敤浜や簰浼氬紩璧风偣閫忛棶棰�
+ // canvasGroup.blocksRaycasts = false;
}
- if (canvasScaler != null)
+ if (_rectTransform != null)
{
- canvasScaler.scaleFactor = 0.3f;
+ _rectTransform.localScale = Vector3.one * 0.3f;
}
break;
}
@@ -604,7 +601,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;
@@ -620,19 +617,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;
}
@@ -658,7 +655,7 @@
}
catch (System.Exception e)
{
- Debug.LogError($"鎾斁鎵撳紑鍔ㄧ敾鏃跺嚭閿�: {e.Message}");
+ Debug.LogError($"鎾斁鎵撳紑鍔ㄧ敾鏃跺嚭閿�: {e.StackTrace}");
// 鍑洪敊鏃剁‘淇漊I鍙骞跺彲浜や簰
if (canvasGroup != null)
@@ -682,9 +679,9 @@
canvasGroup.alpha = 1f;
canvasGroup.blocksRaycasts = true;
}
- if (canvasScaler != null)
+ if (_rectTransform != null)
{
- canvasScaler.scaleFactor = 1f;
+ _rectTransform.localScale = Vector3.one;
}
if (_rectTransform != null)
@@ -728,7 +725,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;
@@ -773,11 +770,16 @@
currentAnimation.OnComplete(() =>
{
isAnimating = false;
-
- // 鍔ㄧ敾瀹屾垚鍚庯紝瀹屾垚鍏抽棴杩囩▼
if (isClosing)
{
- CompleteClose();
+ try
+ {
+ CompleteClose();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"{uiName}鐣岄潰鐨凜ompleteClose鎶ラ敊: {e.StackTrace}");
+ }
}
});
@@ -785,7 +787,7 @@
}
catch (System.Exception e)
{
- Debug.LogError($"鎾斁鍏抽棴鍔ㄧ敾鏃跺嚭閿�: {e.Message}");
+ Debug.LogError($"鎾斁鍏抽棴鍔ㄧ敾鏃跺嚭閿�: {e.StackTrace}");
// 鍑洪敊鏃剁洿鎺ュ畬鎴愬叧闂�
isAnimating = false;
--
Gitblit v1.8.0