diff --git a/Assets/Prototype/佩佩/Scripts/EyeManager.cs b/Assets/Prototype/佩佩/Scripts/EyeManager.cs index 7d1726566..11d478bb7 100644 --- a/Assets/Prototype/佩佩/Scripts/EyeManager.cs +++ b/Assets/Prototype/佩佩/Scripts/EyeManager.cs @@ -6,7 +6,6 @@ using DG.Tweening; using Yarn.Unity; using System.Linq; - public class EyeManager : MonoBehaviour { [SerializeField] @@ -22,12 +21,16 @@ public class EyeManager : MonoBehaviour { CanImagineColor, CannotImagineColor, - EyeDisorder + EyeDisorder } public ViewCameraManager cameraManager; private IEyeStateEffect eyeStateEffect; + private IEyeStateEffect oldEyeStateEffect; // 新增的字段 + + private bool isFirstSetTargetAfterStateChange=false; // 新增的字段 + private float colorTransitionDuration; [SerializeField] @@ -108,11 +111,17 @@ public class EyeManager : MonoBehaviour float duration = eyeStateEffect.TransitionDuration; - if (currentTarget != null) + if (isFirstSetTargetAfterStateChange) + { + oldEyeStateEffect?.ApplyUnfocusedEffect(currentTarget); + isFirstSetTargetAfterStateChange = false; + } + else { eyeStateEffect?.ApplyUnfocusedEffect(currentTarget); - yield return new WaitForSeconds(duration); } + //eyeStateEffect?.ApplyUnfocusedEffect(currentTarget); + yield return new WaitForSeconds(duration); cameraManager.MoveCameraTo(target.targetTransform, 1f); yield return new WaitForSeconds(1f); @@ -146,6 +155,9 @@ public class EyeManager : MonoBehaviour // Cleanup current state effect eyeStateEffect?.CleanupEffect(currentTarget); + // 保存旧的状态 + oldEyeStateEffect = eyeStateEffect; + switch (state) { case EyeState.CanImagineColor: @@ -163,9 +175,13 @@ public class EyeManager : MonoBehaviour // Update transition duration colorTransitionDuration = eyeStateEffect.TransitionDuration; - - // Initialize new state effect + isFirstSetTargetAfterStateChange = true; + } + public void InitializeEyeEffect() + { + // Initialize new state effect eyeStateEffect.InitializeEffect(currentTarget, cameraManager); + } } diff --git a/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs b/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs index d81a9b499..6d610aa25 100644 --- a/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs +++ b/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs @@ -22,7 +22,7 @@ public class EyeTransitionManager : MonoBehaviour public MemoryProcess memoryProcess; public LineManager lineManager; // LineManager的引用 - + public EyeManager eyeManager; // LineManager的引用 // 视图配置类 [System.Serializable] public class ViewConfig @@ -236,6 +236,7 @@ public class EyeTransitionManager : MonoBehaviour [YarnCommand("start_transition")] public IEnumerator StartTransitionCoroutine(string targetViewStateName) { + eyeManager.InitializeEyeEffect(); ViewState targetViewState; if (!Enum.TryParse(targetViewStateName, out targetViewState)) { diff --git a/Assets/Prototype/佩佩/佩佩视觉模块.unity b/Assets/Prototype/佩佩/佩佩视觉模块.unity index 81e7ba1eb..3564f7dd3 100644 --- a/Assets/Prototype/佩佩/佩佩视觉模块.unity +++ b/Assets/Prototype/佩佩/佩佩视觉模块.unity @@ -9442,6 +9442,7 @@ MonoBehaviour: blackScreenImage: {fileID: 783911289} memoryProcess: {fileID: 1617403347} lineManager: {fileID: 1182811776} + eyeManager: {fileID: 271919487} viewConfigs: - viewPanel: {fileID: 1229487019} activateButton: {fileID: 1887941707} diff --git a/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn b/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn index 6dc69eea7..d71969a6b 100644 --- a/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn +++ b/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn @@ -25,7 +25,7 @@ position: 63,-958 <> <> <> -<> +<> <> ===