改动与优化

This commit is contained in:
2026-07-20 22:19:25 +08:00
parent 0a0872c4f4
commit b5d1cdcbc5
83 changed files with 2475 additions and 276 deletions
@@ -8,8 +8,10 @@ public class UI_SettingsPanelEnterAnim : MonoBehaviour
[SerializeField] private CanvasGroup fadeTarget;
[SerializeField] private bool playOnEnable = true;
[SerializeField] private float enterDuration = 0.3f;
[SerializeField] private float exitDuration = 0.18f;
[SerializeField] private float fromOffsetY = 32f;
[SerializeField] private Ease enterEase = Ease.OutCubic;
[SerializeField] private Ease exitEase = Ease.InCubic;
[SerializeField] private bool useUnscaledTime = true;
private Sequence enterSequence;
@@ -44,13 +46,20 @@ public class UI_SettingsPanelEnterAnim : MonoBehaviour
KillTween();
moveTarget.anchoredPosition = basePos - new Vector2(0f, Mathf.Abs(fromOffsetY));
bool canAnimateTransform = !UI_OrderedEntryAnimator.IsLayoutSensitive(moveTarget);
if (canAnimateTransform)
{
moveTarget.anchoredPosition = basePos - new Vector2(0f, Mathf.Abs(fromOffsetY));
}
fadeTarget.alpha = 0f;
fadeTarget.interactable = false;
fadeTarget.blocksRaycasts = false;
enterSequence = DOTween.Sequence().SetUpdate(useUnscaledTime);
enterSequence.Join(moveTarget.DOAnchorPos(basePos, Mathf.Max(0.01f, enterDuration)).SetEase(enterEase));
if (canAnimateTransform)
{
enterSequence.Join(moveTarget.DOAnchorPos(basePos, Mathf.Max(0.01f, enterDuration)).SetEase(enterEase));
}
enterSequence.Join(fadeTarget.DOFade(1f, Mathf.Max(0.01f, enterDuration)).SetEase(Ease.OutCubic));
enterSequence.OnComplete(() =>
{
@@ -58,6 +67,50 @@ public class UI_SettingsPanelEnterAnim : MonoBehaviour
fadeTarget.blocksRaycasts = true;
enterSequence = null;
});
enterSequence.OnKill(() =>
{
ResetToBase();
enterSequence = null;
});
}
public void PlayExitThen(System.Action onComplete)
{
AutoWire();
CacheBasePos();
if (moveTarget == null || fadeTarget == null)
{
onComplete?.Invoke();
return;
}
KillTween();
fadeTarget.interactable = false;
fadeTarget.blocksRaycasts = false;
Vector2 targetPos = basePos - new Vector2(0f, Mathf.Abs(fromOffsetY));
float duration = Mathf.Max(0.01f, exitDuration);
bool canAnimateTransform = !UI_OrderedEntryAnimator.IsLayoutSensitive(moveTarget);
enterSequence = DOTween.Sequence().SetUpdate(useUnscaledTime);
if (canAnimateTransform)
{
enterSequence.Join(moveTarget.DOAnchorPos(targetPos, duration).SetEase(exitEase));
}
enterSequence.Join(fadeTarget.DOFade(0f, duration).SetEase(Ease.InCubic));
enterSequence.OnComplete(() =>
{
enterSequence = null;
ResetToBase();
onComplete?.Invoke();
});
enterSequence.OnKill(() =>
{
ResetToBase();
enterSequence = null;
});
}
private void AutoWire()
@@ -90,7 +143,10 @@ public class UI_SettingsPanelEnterAnim : MonoBehaviour
private void ResetToBase()
{
if (moveTarget != null && basePosCached)
moveTarget.anchoredPosition = basePos;
{
if (!UI_OrderedEntryAnimator.IsLayoutSensitive(moveTarget))
moveTarget.anchoredPosition = basePos;
}
if (fadeTarget != null)
{