feat: Round 50 narrative systems improvements
IQuestManager+QuestManager: add FillQuestsInState/FillFilterQuests buffer overloads (no-alloc hot path); remove R49 duplicate implementations. QuestGiver: cache current quest result (_cachedQuest/_cachedState/_cacheDirty) to avoid per-frame foreach in InteractPrompt; invalidate on OnEnable and Interact_Internal state changes. IDialogueService+DialogueManager: add StartDialogue(..., Action onComplete) overload; callback fires once on ForceEnd (covers both normal end and interrupt); supports chained callbacks via += accumulation. DialogueVariantPreviewWindow: add 'Copy CSV' button in matrix section; exports all 2^N flag combinations with winner column; handles N>10 guard and CSV-safe escaping. WorldStateRegistry: add TryGetCategory(id, out category) reverse lookup for debug tools. NpcSOEditor: new CustomEditor for NpcSO showing live nameKey localization preview in Inspector (green label or warning box if Key not found). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -23,6 +23,14 @@ namespace BaseGames.Dialogue
|
||||
/// <param name="priority">优先级(默认 0)。数值越大越优先;高优先级可打断低优先级对话。</param>
|
||||
void StartDialogue(DialogueSequenceSO sequence, string npcId = "", int priority = 0);
|
||||
|
||||
/// <summary>
|
||||
/// 启动对话序列,并在本次对话(含所有排队续播)全部结束时回调 <paramref name="onComplete"/>。
|
||||
/// 若 <paramref name="onComplete"/> 为 null,行为与 <see cref="StartDialogue(DialogueSequenceSO,string,int)"/> 完全相同。
|
||||
/// 回调仅触发一次;若对话被 <see cref="ForceEnd"/> 打断,回调同样会被调用(在 ForceEnd 末尾)。
|
||||
/// 适用场景:EventChain 触发对话后等待完成再执行下一动作、CutsceneModule 同步对话与演出。
|
||||
/// </summary>
|
||||
void StartDialogue(DialogueSequenceSO sequence, string npcId, int priority, System.Action onComplete);
|
||||
|
||||
/// <summary>
|
||||
/// 立即强制结束当前对话(含清空等待队列),恢复游戏输入。
|
||||
/// 适用于:场景切换、演出系统打断、死亡/传送等需要硬中断的场合。
|
||||
|
||||
Reference in New Issue
Block a user