diff --git a/Assets/Resources/Yarn/FP_Day1_mid/Day1_mid.yarn b/Assets/Resources/Yarn/FP_Day1_mid/Day1_mid.yarn index b440414a6..b2d9baf29 100644 --- a/Assets/Resources/Yarn/FP_Day1_mid/Day1_mid.yarn +++ b/Assets/Resources/Yarn/FP_Day1_mid/Day1_mid.yarn @@ -228,7 +228,7 @@ peipei: 再见了,叶子。 #line:0694ade <> <> -<> +// <> // bb: 发送给 火山 -「嘿,在么」 #line:0dd9d0c // <> diff --git a/Assets/Resources/Yarn/FP_Day2_night/Day2_night.yarn b/Assets/Resources/Yarn/FP_Day2_night/Day2_night.yarn index 740e6da18..3566331b1 100644 --- a/Assets/Resources/Yarn/FP_Day2_night/Day2_night.yarn +++ b/Assets/Resources/Yarn/FP_Day2_night/Day2_night.yarn @@ -4,7 +4,7 @@ colorID: 8 position: 205,-53 --- <> -// <> +<> // <> // <> // <> diff --git a/Assets/Scripts/Dialog System/DialogController.cs b/Assets/Scripts/Dialog System/DialogController.cs index 82272f0df..3f231c50b 100644 --- a/Assets/Scripts/Dialog System/DialogController.cs +++ b/Assets/Scripts/Dialog System/DialogController.cs @@ -72,6 +72,13 @@ namespace AibisDream public void StartDialogNode(string nodeName) { + // 检查对话是否正在运行 + if (_dialogueRunner.IsDialogueRunning) + { + Debug.LogWarning($"对话正在运行中,无法启动新节点: {nodeName}"); + return; + } + if (CheckIfNodeExistInCurrentYarnProject(nodeName)) { _dialogueRunner.StartDialogue(nodeName); diff --git a/Assets/Scripts/Dialog System/LineView.cs b/Assets/Scripts/Dialog System/LineView.cs index 8cce52c29..97999c2a3 100644 --- a/Assets/Scripts/Dialog System/LineView.cs +++ b/Assets/Scripts/Dialog System/LineView.cs @@ -2,6 +2,7 @@ using System; using AibisDream.Framework; using AibisDream.Utility; using Yarn.Unity; +using UnityEngine; namespace AibisDream { @@ -15,11 +16,21 @@ namespace AibisDream if (DialogController.Instance.quickRunMode) { - DialogCanvasManager.Instance.TrySkipLine(true); - DialogCanvasManager.Instance.NextStep(); + // 在快速模式下,立即跳过到下一行,不等待Yarn命令执行 + StartCoroutine(QuickRunNextStep(onDialogueLineFinished)); } } + private System.Collections.IEnumerator QuickRunNextStep(Action onDialogueLineFinished) + { + // 在快速模式下,立即跳过,不等待任何延迟 + yield return null; + + // 立即跳过到下一行 + DialogCanvasManager.Instance.TrySkipLine(true); + DialogCanvasManager.Instance.NextStep(); + } + private void HandleLineOutput(LocalizedLine dialogueLine, Action onDialogueLineFinished) { DialogCanvasManager.Instance.ShowLine(dialogueLine.TextWithoutCharacterName.Text, diff --git a/Assets/Scripts/FixSystemNew/BodyModule/BodyModule.cs b/Assets/Scripts/FixSystemNew/BodyModule/BodyModule.cs index 0ee1aa68d..d71e66959 100644 --- a/Assets/Scripts/FixSystemNew/BodyModule/BodyModule.cs +++ b/Assets/Scripts/FixSystemNew/BodyModule/BodyModule.cs @@ -162,9 +162,6 @@ namespace AibisDream.FixSystem DialogController.Instance?.StartDialogNode($"{data.moduleName}CutDown"); EnumEventSystem.Global.Send(EventEnum.CutEnd); Destroy(gameObject); - DialogController.Instance?.StartDialogNode($"{data.moduleName}CutDown"); - EnumEventSystem.Global.Send(EventEnum.CutEnd); - Destroy(gameObject); } public void SetCutTextVisible(bool visible)