2修
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user