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 | 417 +++++++++++++++++++++++++----------------------------------
1 files changed, 175 insertions(+), 242 deletions(-)
diff --git a/Main/System/UIBase/UIBase.cs b/Main/System/UIBase/UIBase.cs
index a43f51e..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, // 鍔犺浇鐣岄潰
}
@@ -24,7 +24,9 @@
SlideFromTop, // 浠庨《閮ㄦ粦鍏�
SlideFromBottom, // 浠庡簳閮ㄦ粦鍏�
SlideFromLeft, // 浠庡乏渚ф粦鍏�
- SlideFromRight // 浠庡彸渚ф粦鍏�
+ SlideFromRight, // 浠庡彸渚ф粦鍏�
+ ScaleOverInOut,// 缂╂斁鏍规嵁鏇茬嚎
+
}
[RequireComponent(typeof(Canvas))]
@@ -38,16 +40,26 @@
[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;
[SerializeField][HideInInspector] public int maxIdleRounds = 20;
// 鍔ㄧ敾鐩稿叧
- [SerializeField] public UIAnimationType openAnimationType = UIAnimationType.ScaleInOut;
+ [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;
[SerializeField][HideInInspector] public Ease animationEase = Ease.OutQuad; // 纭繚浣跨敤 DG.Tweening.Ease
// 杩愯鏃剁姸鎬�
@@ -60,14 +72,21 @@
// 鎵撳紑閬僵
[SerializeField] public bool openMask = false;
- // 鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰
+ // 榛樿鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰
[SerializeField] public bool clickEmptySpaceClose = false;
private GameObject screenMask = null;
private Button btnClickEmptyClose;
+ public Action btnClickEmptyCloseEvent = null; //鎻愪緵鐐瑰嚮绌虹櫧鍖哄煙鍏抽棴鐣岄潰鐨勫洖璋�
- protected int functionOrder = 0;
+ // 璺烵neLevelWin鑱斿姩 瀹為檯涓婃槸闇�瑕佺户鎵胯嚜OneLevelWin鎵嶈兘鐢熸晥鐨勫�� 浣跨敤闇�瑕佹敞鎰�
+ int m_FunctionOrder = 0;
+ public int functionOrder
+ {
+ get { return m_FunctionOrder; }
+ set { m_FunctionOrder = value; }
+ }
// 鍐呴儴鐘舵��
protected bool isActive = false;
@@ -77,10 +96,8 @@
// 缁勪欢寮曠敤
protected Canvas canvas;
protected CanvasGroup canvasGroup;
- protected RectTransform rectTransform;
// 鍔ㄧ敾鐩稿叧
- protected Vector3 originalScale;
protected Vector3 originalPosition;
protected Sequence currentAnimation;
@@ -92,19 +109,16 @@
protected virtual void Awake()
{
- // 纭繚 DOTween 宸插垵濮嬪寲
- DOTween.SetTweensCapacity(500, 50);
-
// 闃叉鏈変汉涓嶅啓base.InitComponent寮曞彂閿欒 鎵�浠ユ媶鍒�
InitComponentInternal();
// 鍦ˋwake涓繘琛屽熀鏈垵濮嬪寲
InitComponent();
// 淇濆瓨鍘熷鍊肩敤浜庡姩鐢�
- if (rectTransform != null)
+ if (_rectTransform != null)
{
- originalScale = rectTransform.localScale;
- originalPosition = rectTransform.anchoredPosition;
+ originalPosition = _rectTransform.anchoredPosition;;
+
}
ApplySettings();
@@ -125,20 +139,28 @@
protected async UniTask ApplySettings()
{
- await UniTask.DelayFrame(5);
-
- if (null != transform)
+ if (clickEmptySpaceClose)
{
- if (clickEmptySpaceClose)
+ //寤惰繜鍒涘缓浼氬鑷村眰绾у湪ScreenMask涔嬩笂
+ GameObject goBtnESC = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/ClickEmptyCloseMask"), transform);
+ btnClickEmptyClose = goBtnESC.GetComponent<Button>();
+ btnClickEmptyClose.transform.SetAsFirstSibling();
+ await UniTask.DelayFrame(5);
+
+ btnClickEmptyClose.AddListener(()=>
{
- GameObject goBtnESC = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/ClickEmptyCloseMask"), transform);
- // Load
- btnClickEmptyClose = goBtnESC.GetComponent<Button>();
- btnClickEmptyClose.AddListener(CloseWindow);
- btnClickEmptyClose.transform.SetAsFirstSibling();
- }
+ if (btnClickEmptyCloseEvent != null)
+ {
+ btnClickEmptyCloseEvent();
+ }
+ else
+ {
+ CloseWindow();
+ }
+ });
}
}
+
protected async void ExecuteNextFrame(Action _action)
{
@@ -171,8 +193,9 @@
// 璁剧疆Canvas灞炴��
canvas.overrideSorting = true;
-
canvas.worldCamera = CameraManager.uiCamera;
+
+ canvas.sortingLayerID = SortingLayer.NameToID("UI"); // 纭繚浣跨敤姝g‘鐨勬帓搴忓眰
// 鑾峰彇鎴栨坊鍔燙anvasGroup缁勪欢
canvasGroup = GetComponent<CanvasGroup>();
@@ -188,9 +211,9 @@
}
canvasScaler = GetComponent<CanvasScaler>();
-
- // 鑾峰彇RectTransform缁勪欢
- rectTransform = GetComponent<RectTransform>();
+ canvasScaler.referenceResolution = Constants.DESIGN_RESOLUTION;
+ canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
+ canvasScaler.matchWidthOrHeight = 0;
}
// 鑾峰彇蹇呰鐨勭粍浠�
@@ -221,6 +244,12 @@
// 鎵撳紑UI
public void HandleOpen()
{
+ if (_rectTransform == null)
+ {
+ Debug.LogError($"鐣岄潰: {uiName} 闇�瑕佽缃牴鑺傜偣_rectTransform ");
+ return;
+ }
+
OnPreOpen();
// 濡傛灉姝e湪鎾斁鍔ㄧ敾锛屽厛鍋滄
StopCurrentAnimation();
@@ -233,8 +262,19 @@
// 鏍规嵁鍔ㄧ敾绫诲瀷鎾斁鎵撳紑鍔ㄧ敾
PlayOpenAnimation();
+
+ // // 濡傛灉鍚庣画闇�瑕佺粺涓�澶勭悊鍒樻捣鎴栬�呭皬娓告垙鐨勭晫闈㈤�傞厤闂
+ // _rectTransform.offsetMin = new Vector2(0, 10); //涓嬫柟
+ // _rectTransform.offsetMax = new Vector2(0, -50); //涓婃柟
OnOpen();
+
+ ExecuteNextFrame(NextFrameAfterOpen);
+ }
+
+ protected virtual void NextFrameAfterOpen()
+ {
+
}
// 鍏抽棴UI - 淇敼鍚庣殑鏂规硶
@@ -255,7 +295,6 @@
// 绂佺敤浜や簰浣嗕繚鎸佸彲瑙�
if (canvasGroup != null)
{
- canvasGroup.interactable = false;
canvasGroup.blocksRaycasts = false;
}
@@ -314,148 +353,17 @@
/// <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 null;
- }
-
- // 鍔犺浇鐗规晥璧勬簮
- 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 UIEffectPlayer.CreateEffect(id, parent, false);
}
- /// <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
@@ -485,15 +393,13 @@
// 鎾斁鎵撳紑鍔ㄧ敾
protected virtual void PlayOpenAnimation()
{
+
+
if (openAnimationType == UIAnimationType.None)
{
// 鏃犲姩鐢伙紝鐩存帴鍚敤浜や簰
- if (canvasGroup != null)
- {
- canvasGroup.alpha = 1f;
- canvasGroup.interactable = true;
- canvasGroup.blocksRaycasts = true;
- }
+ // 鍒濆鍊艰瀹氬ソ
+ _ResetToBegin();
return;
}
@@ -506,77 +412,74 @@
if (canvasGroup != null)
{
canvasGroup.alpha = 0f;
- canvasGroup.interactable = false;
canvasGroup.blocksRaycasts = false;
+ }
+ if (_rectTransform != null)
+ {
+ _rectTransform.localScale = Vector3.one;
}
break;
case UIAnimationType.ScaleInOut:
- if (rectTransform != null)
+ if (canvasGroup != null)
{
- canvasScaler.scaleFactor = 0.3f;
- canvasGroup.interactable = false;
+ canvasGroup.alpha = 1f;
canvasGroup.blocksRaycasts = false;
+ }
+ if (_rectTransform != null)
+ {
+ _rectTransform.localScale = Vector3.one * 0.3f;
}
break;
case UIAnimationType.SlideFromTop:
- if (rectTransform != null)
+ _ResetToBegin();
+ if (_rectTransform != null)
{
Vector2 startPos = originalPosition;
- startPos.y = Screen.height;
- rectTransform.anchoredPosition = startPos;
- }
- if (canvasGroup != null)
- {
- canvasGroup.alpha = 0f;
- canvasGroup.interactable = false;
- canvasGroup.blocksRaycasts = false;
+ startPos.y = originalPosition.y + Screen.height;
+ _rectTransform.anchoredPosition = startPos;
}
break;
case UIAnimationType.SlideFromBottom:
- if (rectTransform != null)
+ _ResetToBegin();
+ if (_rectTransform != null)
{
Vector2 startPos = originalPosition;
- startPos.y = -Screen.height;
- rectTransform.anchoredPosition = startPos;
- }
- if (canvasGroup != null)
- {
- canvasGroup.alpha = 0f;
- canvasGroup.interactable = false;
- canvasGroup.blocksRaycasts = false;
+ startPos.y = originalPosition.y-Screen.height;
+ _rectTransform.anchoredPosition = startPos;
}
break;
case UIAnimationType.SlideFromLeft:
- if (rectTransform != null)
+ _ResetToBegin();
+ if (_rectTransform != null)
{
Vector2 startPos = originalPosition;
- startPos.x = -Screen.width;
- rectTransform.anchoredPosition = startPos;
- }
- if (canvasGroup != null)
- {
- canvasGroup.alpha = 0f;
- canvasGroup.interactable = false;
- canvasGroup.blocksRaycasts = false;
+ startPos.x = originalPosition.x-Screen.width;
+ _rectTransform.anchoredPosition = startPos;
}
break;
case UIAnimationType.SlideFromRight:
- if (rectTransform != null)
+ _ResetToBegin();
+ if (_rectTransform != null)
{
Vector2 startPos = originalPosition;
- startPos.x = Screen.width;
- rectTransform.anchoredPosition = startPos;
+ startPos.x = originalPosition.x+Screen.width;
+ _rectTransform.anchoredPosition = startPos;
}
+ break;
+ case UIAnimationType.ScaleOverInOut:
if (canvasGroup != null)
{
- canvasGroup.alpha = 0f;
- canvasGroup.interactable = false;
+ canvasGroup.alpha = 1f;
canvasGroup.blocksRaycasts = false;
+ }
+ if (_rectTransform != null)
+ {
+ _rectTransform.localScale = Vector3.one * 0.3f;
}
break;
}
@@ -597,9 +500,9 @@
break;
case UIAnimationType.ScaleInOut:
- if (rectTransform != null)
+ if (_rectTransform != null)
{
- currentAnimation.Append(DOVirtual.Float(0.3f, originalScale.x, animeDuration, (value) => {canvasScaler.scaleFactor = value;}).SetEase(animationEase));
+ currentAnimation.Append(DOVirtual.Float(0.3f, 1f, animeDuration, (value) => {_rectTransform.localScale = Vector3.one * value;}).SetEase(animationEase));
}
break;
@@ -607,13 +510,27 @@
case UIAnimationType.SlideFromBottom:
case UIAnimationType.SlideFromLeft:
case UIAnimationType.SlideFromRight:
- if (rectTransform != null)
+ if (_rectTransform != null)
{
- currentAnimation.Append(rectTransform.DOAnchorPos(originalPosition, animeDuration).SetEase(animationEase));
+ currentAnimation.Append(_rectTransform.DOAnchorPos(originalPosition, animeDuration).SetEase(animationEase));
}
- if (canvasGroup != null)
+ break;
+ case UIAnimationType.ScaleOverInOut:
+ if (_rectTransform != null)
{
- currentAnimation.Join(canvasGroup.DOFade(1f, animeDuration).SetEase(animationEase));
+ 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‘
+ );
+
}
break;
}
@@ -622,14 +539,18 @@
currentAnimation.OnComplete(() =>
{
isAnimating = false;
+ _ResetToBegin();
+ OnOpenAnimationComplete();
// 鍚敤浜や簰
if (canvasGroup != null)
{
- canvasGroup.interactable = true;
canvasGroup.blocksRaycasts = true;
}
+
});
+
+ // currentAnimation.ingoreTimeScale = true;
currentAnimation.Play();
}
@@ -641,11 +562,38 @@
if (canvasGroup != null)
{
canvasGroup.alpha = 1f;
- canvasGroup.interactable = true;
canvasGroup.blocksRaycasts = true;
}
isAnimating = false;
}
+ }
+
+ // private void Update()
+ // {
+ // Debug.LogError(_rectTransform.parent.name + ":" + _rectTransform.anchoredPosition);
+ // }
+
+ private void _ResetToBegin()
+ {
+ if (canvasGroup != null)
+ {
+ canvasGroup.alpha = 1f;
+ canvasGroup.blocksRaycasts = true;
+ }
+ if (_rectTransform != null)
+ {
+ _rectTransform.localScale = Vector3.one;
+ }
+
+ if (_rectTransform != null)
+ {
+ _rectTransform.anchoredPosition = originalPosition;
+ }
+ }
+
+ protected virtual void OnOpenAnimationComplete()
+ {
+
}
// 鎾斁鍏抽棴鍔ㄧ敾 - 淇敼鍚庣殑鏂规硶
@@ -670,66 +618,51 @@
case UIAnimationType.FadeInOut:
if (canvasGroup != null)
{
- currentAnimation.Append(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
+ currentAnimation.Append(canvasGroup.DOFade(0.1f, animeDuration).SetEase(animationEase));
}
break;
case UIAnimationType.ScaleInOut:
- if (rectTransform != null)
+ case UIAnimationType.ScaleOverInOut:
+ if (_rectTransform != null)
{
- currentAnimation.Append(DOVirtual.Float(originalScale.x, 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;
case UIAnimationType.SlideFromTop:
- if (rectTransform != null)
+ if (_rectTransform != null)
{
Vector2 endPos = originalPosition;
endPos.y = Screen.height;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
- }
- if (canvasGroup != null)
- {
- currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
+ currentAnimation.Append(_rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
break;
case UIAnimationType.SlideFromBottom:
- if (rectTransform != null)
+ if (_rectTransform != null)
{
Vector2 endPos = originalPosition;
endPos.y = -Screen.height;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
- }
- if (canvasGroup != null)
- {
- currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
+ currentAnimation.Append(_rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
break;
case UIAnimationType.SlideFromLeft:
- if (rectTransform != null)
+ if (_rectTransform != null)
{
Vector2 endPos = originalPosition;
endPos.x = -Screen.width;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
- }
- if (canvasGroup != null)
- {
- currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
+ currentAnimation.Append(_rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
break;
case UIAnimationType.SlideFromRight:
- if (rectTransform != null)
+ if (_rectTransform != null)
{
Vector2 endPos = originalPosition;
endPos.x = Screen.width;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
- }
- if (canvasGroup != null)
- {
- currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
+ currentAnimation.Append(_rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
break;
}
--
Gitblit v1.8.0