diff --git a/Assets/Prefabs/FixSystemPrefabs/Clinic System.prefab b/Assets/Prefabs/FixSystemPrefabs/Clinic System.prefab index ac5e2975b..c089cbca1 100644 --- a/Assets/Prefabs/FixSystemPrefabs/Clinic System.prefab +++ b/Assets/Prefabs/FixSystemPrefabs/Clinic System.prefab @@ -513,7 +513,7 @@ MonoBehaviour: maxWidth: 1000 minWidth: -1 bubbleStyle: {fileID: 11400000, guid: eebbe16a999bced4899bcab04d967bce, type: 2} - pivotType: 1 + pivotType: 8 --- !u!1 &1855207041374924432 GameObject: m_ObjectHideFlags: 0 @@ -1359,8 +1359,8 @@ MonoBehaviour: m_ShadowVolumeIntensityEnabled: 0 m_ShadowVolumeIntensity: 0.75 m_LocalBounds: - m_Center: {x: 0.034300327, y: -0.059900045, z: 0} - m_Extent: {x: 14.1189995, y: 5.564, z: 0} + m_Center: {x: 0.032999992, y: -0.060499907, z: 0} + m_Extent: {x: 14.1184, y: 5.5629997, z: 0} m_PointLightInnerAngle: 360 m_PointLightOuterAngle: 360 m_PointLightInnerRadius: 0 diff --git a/Assets/Prefabs/FixSystemPrefabs/Fix System Center.prefab b/Assets/Prefabs/FixSystemPrefabs/Fix System Center.prefab index 62a2b4047..46a33416f 100644 --- a/Assets/Prefabs/FixSystemPrefabs/Fix System Center.prefab +++ b/Assets/Prefabs/FixSystemPrefabs/Fix System Center.prefab @@ -44,4 +44,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1de0c108139bfab468f734b0502b1ad3, type: 3} m_Name: m_EditorClassIdentifier: - defaultState: 1 + defaultState: 0 diff --git a/Assets/Scripts/FixSystem/Memory/MemoryProcess.cs b/Assets/Scripts/FixSystem/Memory/MemoryProcess.cs index d39b93f70..f1137d618 100644 --- a/Assets/Scripts/FixSystem/Memory/MemoryProcess.cs +++ b/Assets/Scripts/FixSystem/Memory/MemoryProcess.cs @@ -106,8 +106,16 @@ namespace AibisDream.FixSystem // 离开视图时的逻辑 Debug.Log("MemoryView exited."); - if (frequencySlider != null) frequencySlider.LockSlider(); - if (claritySlider != null) claritySlider.LockSlider(); + if (frequencySlider != null) + { + frequencySlider.SetInteractable(false); + frequencySlider.LockSlider(); + } + if (claritySlider != null) + { + claritySlider.SetInteractable(false); + claritySlider.LockSlider(); + } } private void Awake() @@ -202,6 +210,33 @@ namespace AibisDream.FixSystem if (claritySlider != null) claritySlider.Init(memoryClarityVolume); + ResetPresentationState(); + } + + /// + /// 单条记忆播放结束后的复位:不调用 (避免再次锁条并触发打开 Timeline), + /// 仅禁用拖动;完整 仅在退出 执行。 + /// + private void ResetAfterMemoryFinished() + { + isProcessing = false; + + if (isPlayingFaderSound) + { + AudioManager.Instance.StopSfx("event:/ActionFB/mem_fader"); + isPlayingFaderSound = false; + } + + if (frequencySlider != null) + frequencySlider.SetInteractable(false); + if (claritySlider != null) + claritySlider.SetInteractable(false); + + ResetPresentationState(); + } + + private void ResetPresentationState() + { if (fadeMaterial != null) fadeMaterial.SetFloat("_DirectionalDistortionFade", FadeMaterialStartValue); memoryFinishedSpriteRenderer.color = Color.black; @@ -221,7 +256,7 @@ namespace AibisDream.FixSystem PunchTapeManager.Instance.OpenFavoritesPanel(); - Init(); + ResetAfterMemoryFinished(); EnsurePunchTapeSlotReference(); if (punchTapeSlot != null && punchTapeSlot.punchTape != null) { @@ -332,11 +367,15 @@ namespace AibisDream.FixSystem memoryFinishedSpriteRenderer.color = Color.white; memoryProcessVolume.weight = 0; isProcessing = true; + frequencySlider.PrepareForSearch(); + claritySlider.PrepareForSearch(); bool freqUnlocked = false; bool clarityUnlocked = false; frequencySlider.UnlockSlider(() => freqUnlocked = true); claritySlider.UnlockSlider(() => clarityUnlocked = true); yield return new WaitUntil(() => freqUnlocked && clarityUnlocked); + frequencySlider.SetInteractable(true); + claritySlider.SetInteractable(true); } diff --git a/Assets/Scripts/FixSystem/Memory/MemorySlider.cs b/Assets/Scripts/FixSystem/Memory/MemorySlider.cs index 9502a30c8..961892632 100644 --- a/Assets/Scripts/FixSystem/Memory/MemorySlider.cs +++ b/Assets/Scripts/FixSystem/Memory/MemorySlider.cs @@ -19,6 +19,8 @@ namespace AibisDream.FixSystem private Slider slider; private PlayableDirector playableDirector; private Volume _volume; + + /// 视觉 Lock/Unlock(Timeline);true = 收起未开,false = 已打开。 private bool isLocked; public float TargetValue { get; set; } @@ -41,11 +43,23 @@ namespace AibisDream.FixSystem UpdateVolumeWeight(slider.value); isLocked = true; - slider.interactable = false; + SetInteractable(false); } + /// 仅控制是否可拖动,与 / 无关。 public void SetInteractable(bool interactable) => slider.interactable = interactable; + /// + /// 新一轮搜索前复位滑条与 IsFound(不播 Timeline、不改变视觉锁状态)。 + /// 需先设置好 。 + /// + public void PrepareForSearch() + { + slider.value = defaultValue; + HandleValueChanged(slider.value); + } + + /// 仅播放打开 Timeline(若有),不碰 interactable。 public void UnlockSlider(Action onComplete = null) { if (!isLocked) @@ -56,12 +70,12 @@ namespace AibisDream.FixSystem PlayTimeline(openAsset, () => { - slider.interactable = true; isLocked = false; onComplete?.Invoke(); }); } + /// 仅播放收起 Timeline(若有),不碰 interactable。 public void LockSlider(Action onComplete = null) { if (isLocked) @@ -75,7 +89,6 @@ namespace AibisDream.FixSystem PlayTimeline(closeAsset, () => { - slider.interactable = false; isLocked = true; onComplete?.Invoke(); });