改动与优化

This commit is contained in:
FloatGaming
2026-07-20 22:19:25 +08:00
parent 0a0872c4f4
commit b5d1cdcbc5
83 changed files with 2475 additions and 276 deletions
+50 -6
View File
@@ -23,6 +23,7 @@ public class ui_Panel_Setting : MonoBehaviour
private readonly List<RectTransform> enterItems = new List<RectTransform>();
private readonly List<CanvasGroup> enterGroups = new List<CanvasGroup>();
private readonly List<Vector2> enterBasePos = new List<Vector2>();
private readonly List<bool> enterRestoreTransform = new List<bool>();
private Sequence enterSequence;
private void Awake()
@@ -86,6 +87,7 @@ public class ui_Panel_Setting : MonoBehaviour
RectTransform rt = enterItems[i];
CanvasGroup cg = enterGroups[i];
Vector2 basePos = enterBasePos[i];
bool restoreTransform = i < enterRestoreTransform.Count && enterRestoreTransform[i];
if (rt == null || cg == null)
continue;
@@ -93,19 +95,28 @@ public class ui_Panel_Setting : MonoBehaviour
rt.DOKill();
cg.DOKill();
rt.anchoredPosition = basePos - new Vector2(0f, Mathf.Abs(enterOffsetY));
if (restoreTransform)
{
rt.anchoredPosition = basePos - new Vector2(0f, Mathf.Abs(enterOffsetY));
}
cg.alpha = 0f;
float start = i * Mathf.Max(0f, enterItemStagger);
enterSequence.Insert(start,
rt.DOAnchorPos(basePos, Mathf.Max(0.01f, enterItemDuration))
.SetEase(enterEase)
.SetUpdate(true));
if (restoreTransform)
{
enterSequence.Insert(start,
rt.DOAnchorPos(basePos, Mathf.Max(0.01f, enterItemDuration))
.SetEase(enterEase)
.SetUpdate(true));
}
enterSequence.Insert(start,
cg.DOFade(1f, Mathf.Max(0.01f, enterItemDuration))
.SetEase(Ease.OutCubic)
.SetUpdate(true));
}
enterSequence.OnKill(RestoreEnterAnimationState);
enterSequence.OnComplete(RestoreEnterAnimationState);
}
private void CacheEnterItems()
@@ -113,6 +124,7 @@ public class ui_Panel_Setting : MonoBehaviour
enterItems.Clear();
enterGroups.Clear();
enterBasePos.Clear();
enterRestoreTransform.Clear();
for (int i = 0; i < transform.childCount; i++)
{
@@ -131,6 +143,7 @@ public class ui_Panel_Setting : MonoBehaviour
enterItems.Add(rt);
enterGroups.Add(cg);
enterBasePos.Add(rt.anchoredPosition);
enterRestoreTransform.Add(!UI_OrderedEntryAnimator.IsLayoutSensitive(rt));
}
}
@@ -143,8 +156,39 @@ public class ui_Panel_Setting : MonoBehaviour
}
}
private void RestoreEnterAnimationState()
{
for (int i = 0; i < enterItems.Count; i++)
{
RectTransform rt = enterItems[i];
CanvasGroup cg = i < enterGroups.Count ? enterGroups[i] : null;
bool restoreTransform = i < enterRestoreTransform.Count && enterRestoreTransform[i];
if (rt != null)
{
rt.DOKill();
if (restoreTransform && i < enterBasePos.Count)
{
rt.anchoredPosition = enterBasePos[i];
}
}
if (cg != null)
{
cg.DOKill();
cg.alpha = 1f;
}
}
}
void Close()
{
gameObject.SetActive(false);
UI_PanelExitUtility.PlayExitThen(gameObject, () =>
{
if (gameObject != null)
{
gameObject.SetActive(false);
}
});
}
}