剧情+对话完善

This commit is contained in:
SoulliesOfficial
2026-07-21 15:24:42 -04:00
parent 8f230831e9
commit 810d019619
161 changed files with 7271 additions and 1893 deletions

View File

@@ -24,9 +24,19 @@ namespace Ichni.Story.UI
[Header("推进按钮")]
public UnityEngine.UI.Button advanceButton;
[Tooltip("点击后自动快进,直到遇到选项")]
[Tooltip("点击后自动快进;已记忆选项会自动跨过,遇到需要玩家选择的新选项时停止。")]
public UnityEngine.UI.Button fastForwardButton;
[Header("对话辅助功能")]
[Tooltip("中途退出当前 TextBlock本次尚未完成的选项、变量和进度会恢复到进入前状态。")]
[SerializeField] private UnityEngine.UI.Button backButton;
[Tooltip("打开当前一次 TextBlock 的临时对话记录。")]
[SerializeField] private UnityEngine.UI.Button showHistoryButton;
[Tooltip("覆盖在对话上方的记录面板;它不是独立 UIPage。")]
[SerializeField] private DialogueHistoryPage dialogueHistoryPage;
[Header("选项区")]
public GameObject choiceFrame;
public ChoiceButton[] choiceButtons = new ChoiceButton[4];
@@ -58,6 +68,27 @@ namespace Ichni.Story.UI
}
}
private void Start()
{
if (backButton != null)
backButton.onClick.AddListener(OnBackButtonClicked);
if (showHistoryButton != null)
showHistoryButton.onClick.AddListener(OnShowHistoryButtonClicked);
}
private void OnDestroy()
{
if (backButton != null)
backButton.onClick.RemoveListener(OnBackButtonClicked);
if (showHistoryButton != null)
showHistoryButton.onClick.RemoveListener(OnShowHistoryButtonClicked);
if (instance == this)
instance = null;
}
public void PlayFadeIn(UnityAction onComplete = null)
{
FadeIn(0.2f, false, onComplete);
@@ -67,5 +98,26 @@ namespace Ichni.Story.UI
{
FadeOut(0.2f, false, onComplete);
}
private void OnBackButtonClicked()
{
// History 覆盖层本身会拦截输入;此处额外保护,避免错误配置导致 Back 穿透到底层对话。
if (dialogueHistoryPage != null && dialogueHistoryPage.IsOpen)
return;
StoryDialogueController.instance?.CancelActiveDialogue();
}
private void OnShowHistoryButtonClicked()
{
if (dialogueHistoryPage == null || dialogueHistoryPage.IsOpen)
return;
// 打开记录不会推进 Yarn仅取消快进并补全正在显示的一句避免记录与画面不同步。
StoryDialogueController.instance?.dialogueRunner
?.GetComponent<VNDialoguePresenter>()
?.PrepareForHistory();
dialogueHistoryPage.Open(DialogueHistory.Entries);
}
}
}