This commit is contained in:
2026-07-26 03:44:27 +08:00
parent 86351dbd2a
commit add675e45d
223 changed files with 1960 additions and 10735 deletions
@@ -129,6 +129,10 @@ public class settlementController : MonoBehaviour
[Header("Settlement Intro Animation")]
[SerializeField] private bool enableDetailedSettlementIntro = true;
// 整体结算入场动画速度倍率。>1 更快,所有分段时长与间隔按此等比缩短,编排/节奏比例与业务不变。
// 新增字段:旧场景实例反序列化时缺此字段会取此默认值,因此无需改动 Inspector 即可生效。
[Tooltip("结算入场动画整体速度倍率(>1 更快)。等比缩短所有分段,不改变编排与业务逻辑。")]
[SerializeField] private float introTimeScale = 2f;
[SerializeField] private int introFlashCount = 2;
[SerializeField] private float introFlashDuration = 0.24f;
[SerializeField] private float introMoveDuration = 0.42f;
@@ -1723,7 +1727,7 @@ public class settlementController : MonoBehaviour
if (group != null) group.alpha = 0f;
mvpTransform.localPosition = new Vector3(baseLocalPosition.x, baseLocalPosition.y + introMvpEnterYOffset, baseLocalPosition.z);
float duration = Mathf.Max(0.01f, introMvpEnterDuration);
float duration = Mathf.Max(0.01f, ScaledDuration(introMvpEnterDuration));
Sequence seq = DOTween.Sequence().SetUpdate(introTweenUseUnscaledTime);
seq.Join(mvpTransform.DOLocalMoveY(baseLocalPosition.y, duration).SetEase(introMvpEnterEase).SetUpdate(introTweenUseUnscaledTime));
if (group != null)
@@ -1740,7 +1744,7 @@ public class settlementController : MonoBehaviour
SetCanvasAlpha(target.transform, 1f);
float elapsed = 0f;
float dur = Mathf.Max(0.01f, duration);
float dur = Mathf.Max(0.01f, ScaledDuration(duration));
while (elapsed < dur)
{
@@ -1761,7 +1765,7 @@ public class settlementController : MonoBehaviour
SetCanvasAlpha(target.transform, 1f);
float elapsed = 0f;
float dur = Mathf.Max(0.01f, duration);
float dur = Mathf.Max(0.01f, ScaledDuration(duration));
while (elapsed < dur)
{
@@ -1782,7 +1786,7 @@ public class settlementController : MonoBehaviour
SetCanvasAlpha(target.transform, 1f);
float elapsed = 0f;
float dur = Mathf.Max(0.01f, duration);
float dur = Mathf.Max(0.01f, ScaledDuration(duration));
while (elapsed < dur)
{
@@ -1803,7 +1807,7 @@ public class settlementController : MonoBehaviour
target.fillAmount = 0f;
float elapsed = 0f;
float dur = Mathf.Max(0.01f, duration);
float dur = Mathf.Max(0.01f, ScaledDuration(duration));
float targetValue = Mathf.Clamp01(toValue);
while (elapsed < dur)
@@ -1826,7 +1830,7 @@ public class settlementController : MonoBehaviour
if (fadeIn) SetCanvasAlpha(rt, 0f);
float elapsed = 0f;
float dur = Mathf.Max(0.01f, duration);
float dur = Mathf.Max(0.01f, ScaledDuration(duration));
while (elapsed < dur)
{
if (skipIntroRequested) break;
@@ -1849,7 +1853,7 @@ public class settlementController : MonoBehaviour
SetCanvasAlpha(rt, 0f);
float elapsed = 0f;
float dur = Mathf.Max(0.01f, duration);
float dur = Mathf.Max(0.01f, ScaledDuration(duration));
while (elapsed < dur)
{
if (skipIntroRequested) break;
@@ -1868,7 +1872,7 @@ public class settlementController : MonoBehaviour
{
if (cg == null) yield break;
int count = Mathf.Max(1, flashes);
float total = Mathf.Max(0.05f, duration);
float total = Mathf.Max(0.05f, ScaledDuration(duration));
float flashWindow = total / Mathf.Max(1, count * 2);
cg.alpha = 0f;
@@ -1909,6 +1913,8 @@ public class settlementController : MonoBehaviour
{
if (target == null) yield break;
int count = Mathf.Max(1, flashes);
// 注意:这里的 step 传给 WaitRealtime,由其内部统一按 introTimeScale 缩放,
// 故此处用未缩放时长,避免二次缩放(否则会被缩放两次 → duration/scale²)。
float total = Mathf.Max(0.05f, duration);
float step = total / Mathf.Max(1, count * 2);
@@ -1960,10 +1966,17 @@ public class settlementController : MonoBehaviour
return 1f - inv * inv * inv;
}
// 结算动画整体提速:把任意时长按 introTimeScale 等比缩短。集中在此,避免逐个调用点改动。
private float ScaledDuration(float duration)
{
float scale = introTimeScale > 0.01f ? introTimeScale : 1f;
return duration / scale;
}
private IEnumerator WaitRealtime(float duration)
{
float elapsed = 0f;
float dur = Mathf.Max(0f, duration);
float dur = Mathf.Max(0f, ScaledDuration(duration));
while (elapsed < dur)
{
if (skipIntroRequested) yield break;