fix(memory): 调整记忆播放结束复位时序
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -127,7 +127,7 @@ namespace AibisDream.FixSystem
|
||||
private void PrepareMemoryView()
|
||||
{
|
||||
EnsurePunchTapeSlotReference();
|
||||
ResolvePunchTapeManager()?.OpenFavoritesPanel();
|
||||
PunchTapeManager.Instance.OpenFavoritesPanel();
|
||||
SetPlayBackgroundVisible(false, 0f);
|
||||
StartStandbyOverlay();
|
||||
}
|
||||
@@ -141,7 +141,7 @@ namespace AibisDream.FixSystem
|
||||
isPlayingFaderSound = false;
|
||||
}
|
||||
|
||||
ResolvePunchTapeManager()?.CloseFavoritesPanel();
|
||||
PunchTapeManager.Instance.CloseFavoritesPanel();
|
||||
CloseMemoryView();
|
||||
// 离开视图时的逻辑
|
||||
Debug.Log("MemoryView exited.");
|
||||
@@ -158,19 +158,6 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
}
|
||||
|
||||
private PunchTapeManager ResolvePunchTapeManager()
|
||||
{
|
||||
var manager = PunchTapeManager.Resolve();
|
||||
if (manager == null)
|
||||
{
|
||||
Debug.LogError(
|
||||
"[MemoryProcess] 未找到 PunchTapeManager。请确认当前 Fix 场景中存在 PunchTapeCanvas。",
|
||||
this);
|
||||
}
|
||||
|
||||
return manager;
|
||||
}
|
||||
|
||||
private void SetPlayBackgroundVisible(bool active, float alpha)
|
||||
{
|
||||
if (playBackground == null)
|
||||
@@ -320,20 +307,20 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 单条记忆播放结束后的复位:不调用 <see cref="MemorySlider.Init"/> / <see cref="MemorySlider.LockSlider"/>
|
||||
/// (避免收起 Timeline),仅禁用拖动并把拉杆视觉回到默认位置;
|
||||
/// 完整 <see cref="MemorySlider.LockSlider"/> 仅在退出记忆模块时 <see cref="OnExit"/> 执行。
|
||||
/// 复位拉杆与调谐输出:不调用 <see cref="MemorySlider.Init"/> / <see cref="MemorySlider.LockSlider"/>
|
||||
/// (避免收起 Timeline),仅禁用拖动并把拉杆视觉回到默认位置。
|
||||
/// 应在黑幕淡出前调用,避免玩家看到拉杆跳回初始态。
|
||||
/// </summary>
|
||||
private void ResetAfterMemoryFinished()
|
||||
private void ResetSlidersAndTuning()
|
||||
{
|
||||
isProcessing = false;
|
||||
|
||||
if (isPlayingFaderSound)
|
||||
{
|
||||
AudioManager.Instance.StopSfx("event:/ActionFB/mem_fader");
|
||||
isPlayingFaderSound = false;
|
||||
}
|
||||
|
||||
AudioManager.Instance.SetSfxParam("event:/Amb/amb_mem_tuning", "is_mem_tuning", 0);
|
||||
|
||||
if (frequencySlider != null)
|
||||
{
|
||||
frequencySlider.SetInteractable(false);
|
||||
@@ -345,6 +332,16 @@ namespace AibisDream.FixSystem
|
||||
claritySlider.ResetVisualToDefault();
|
||||
}
|
||||
|
||||
ResetSpriteTuning();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 单条记忆播放结束后的完整复位;完整 <see cref="MemorySlider.LockSlider"/> 仅在退出记忆模块时 <see cref="OnExit"/> 执行。
|
||||
/// </summary>
|
||||
private void ResetAfterMemoryFinished()
|
||||
{
|
||||
isProcessing = false;
|
||||
ResetSlidersAndTuning();
|
||||
ResetPresentationState();
|
||||
}
|
||||
|
||||
@@ -364,18 +361,21 @@ namespace AibisDream.FixSystem
|
||||
[YarnCommand("MemoryFinished")]
|
||||
public IEnumerator MemoryFinished()
|
||||
{
|
||||
isProcessing = false;
|
||||
ResetSlidersAndTuning();
|
||||
|
||||
// 短闪雪花再淡出黑幕,避免记忆画面硬切
|
||||
SetMemoryColor(Color.black);
|
||||
ShowSearchOverlay();
|
||||
yield return new WaitForSeconds(MemoryFinishSnowDuration);
|
||||
|
||||
if (playBackground != null)
|
||||
{
|
||||
yield return playBackground.DOFade(0f, DefaultFadeDuration).WaitForCompletion();
|
||||
playBackground.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
// 短闪雪花再回待机,避免记忆画面硬切
|
||||
SetMemoryColor(Color.black);
|
||||
ShowSearchOverlay();
|
||||
yield return new WaitForSeconds(MemoryFinishSnowDuration);
|
||||
|
||||
ResolvePunchTapeManager()?.OpenFavoritesPanel();
|
||||
PunchTapeManager.Instance.OpenFavoritesPanel();
|
||||
|
||||
ResetAfterMemoryFinished();
|
||||
EnsurePunchTapeSlotReference();
|
||||
@@ -404,8 +404,7 @@ namespace AibisDream.FixSystem
|
||||
public IEnumerator PlayMemory(bool useYarn = false, string memName = "")
|
||||
{
|
||||
SetMemoryColor(Color.white);
|
||||
var punchTapeManager = ResolvePunchTapeManager();
|
||||
punchTapeManager?.CloseFavoritesPanel();
|
||||
PunchTapeManager.Instance.CloseFavoritesPanel();
|
||||
|
||||
if (useYarn)
|
||||
{
|
||||
@@ -438,8 +437,7 @@ namespace AibisDream.FixSystem
|
||||
|
||||
if (!useYarn)
|
||||
{
|
||||
if (punchTapeManager == null ||
|
||||
!punchTapeManager.TryGetDefinition(punchTapeSlot.punchTape, out var definition))
|
||||
if (!PunchTapeManager.Instance.TryGetDefinition(punchTapeSlot.punchTape, out var definition))
|
||||
yield break;
|
||||
|
||||
DialogController.Instance.StartDialogNode(definition.DialogNode);
|
||||
@@ -456,8 +454,7 @@ namespace AibisDream.FixSystem
|
||||
|
||||
frequencySlider.TargetValue = GetRandomSearchTarget(frequencySlider);
|
||||
claritySlider.TargetValue = GetRandomSearchTarget(claritySlider);
|
||||
var punchTapeManager = ResolvePunchTapeManager();
|
||||
punchTapeManager?.CloseFavoritesPanel();
|
||||
PunchTapeManager.Instance.CloseFavoritesPanel();
|
||||
|
||||
if (punchTape == null)
|
||||
{
|
||||
@@ -468,8 +465,7 @@ namespace AibisDream.FixSystem
|
||||
|
||||
_activePunchTape = punchTape;
|
||||
|
||||
if (punchTapeManager == null ||
|
||||
!punchTapeManager.TryGetDefinition(_activePunchTape, out var definition))
|
||||
if (!PunchTapeManager.Instance.TryGetDefinition(_activePunchTape, out var definition))
|
||||
{
|
||||
StartStandbyOverlay();
|
||||
yield break;
|
||||
|
||||
Reference in New Issue
Block a user