快速开始
完整演示以检查器优先的设置——Manager、Trigger 和碰撞器区域——并追踪从玩家交互到在播放模式中确认部分变更的完整信号路径。
使用叙事设计让你的第一个场景运行起来
本指南将带你走完实现一个可用的叙事设计配置的最快路径。到最后,你将拥有一个角色:当玩家穿过触发区域时会对章节变化做出反应——无需编写代码,完全通过检查器完成。
先决条件
A
ConvaiCharacter组件已在你的场景中,且角色 ID 有效。你的角色至少定义了一个章节和一个触发器,位于 Convai 仪表板.
你的 Convai API 密钥配置在 工具 → Convai → 配置.
步骤
添加 Narrative Design Manager
选择包含你的 ConvaiCharacter 组件的 GameObject。在检视器中,点击 添加组件 并搜索 叙事设计管理器 (路径: Convai > Narrative Design Manager).
管理器会自动检测 ConvaiCharacter 同一 GameObject 上的……。如果你的角色位于另一个 GameObject 中,请将其拖到 角色 字段中。

从控制面板同步章节
在管理器的检视器中,点击 与后端同步。SDK 会获取你的叙事章节并填充 叙事章节 列表中。
每个条目都会显示来自控制面板的章节名称。下一步你将把事件绑定到这些条目上。
如果列表仍为空,请检查你的角色 ID 是否已设置在 ConvaiCharacter 并且你的 API 密钥在 项目设置 > Convai SDK。该 上一次获取错误 字段会在出错时显示具体错误。

绑定章节事件
展开 叙事章节 列表中的第一个章节条目。你会看到两个 Unity 事件: 章节开始时 是位于 章节结束时.
单击 + on 章节开始时,将任意 GameObject 拖到对象字段中,并选择要调用的方法。最简单的选项是使用下面的 NarrativeDesignDebugLogger 辅助脚本——把它添加到任意 GameObject,然后将该 GameObject 拖到监听器字段,并选择 NarrativeDesignDebugLogger.LogSectionStarted.
NarrativeDesignDebugLogger.cs
using UnityEngine;
public class NarrativeDesignDebugLogger : MonoBehaviour
{
[SerializeField] private string _label = "章节";
/// 连接到 UnitySectionEventConfig.OnSectionStart Unity 事件。
public void LogSectionStarted()
{
Debug.Log($"[NarrativeDesign] {_label} 已开始。", this);
}
/// 连接到 ConvaiNarrativeDesignManager.OnAnySectionChanged Unity 事件。
/// 接收新的章节 ID,类型为字符串。
public void LogSectionChanged(string sectionId)
{
Debug.Log($"[NarrativeDesign] 章节已更改 → {sectionId}", this);
}
}
添加 Narrative Design Trigger
在场景中创建一个新的空 GameObject(将其放在玩家会经过的位置)。点击 添加组件 并搜索 Convai 叙事设计触发器 (路径: Convai > Convai Narrative Design Trigger).
将你的 ConvaiCharacter 到 角色 字段中,或者留空以让 自动查找角色 自动定位它。

获取并选择一个触发器
在 Trigger 组件的检视器中,点击 获取 以从仪表板加载命名触发器。将出现下拉菜单——选择应将图谱推进到第一个章节的触发器。

添加一个碰撞体
默认激活模式是 碰撞,它使用 Unity 的 OnTriggerEnter。在同一个触发器 GameObject 上,点击 添加组件 > Box Collider。在 Box Collider 的设置中,启用 触发器.
调整碰撞体大小,以覆盖你希望触发器触发的区域。在场景视图中,绿色线框盒显示检测区域。

点击播放并走过去
玩家设置检查清单——在按下 Play 之前验证这三项:
标签: 玩家 GameObject 的标签必须设置为
玩家(Unity 的默认标签)。Trigger 组件通过标签匹配来识别玩家。碰撞体: 玩家必须拥有 Collider 组件。没有它,
OnTriggerEnter无论是否重叠,都不会触发。刚体: 触发区域或玩家必须拥有一个
Rigidbody。将其添加到 玩家 ——如果你把它添加到触发区域,那么你需要对场景中的每个触发对象重复此操作。
缺少其中任何一项,都是触发器在 Play 模式下看起来毫无反应的最常见原因。
进入播放模式并将玩家移动穿过碰撞体区域。当触发器触发时:
SDK 会将触发器名称发送到 Convai 后端。
后端会推进图谱并返回新的章节 ID。
ConvaiNarrativeDesignManager接收章节变更并触发 章节开始时 对应章节条目上的你的
Debug.Log调用会出现在控制台中,确认该章节现已激活。
当玩家进入区域时,你应该会在控制台中看到章节 ID 日志。角色的下一次回复将反映新章节的目标。
刚刚发生了什么
穿过碰撞体区域会在整个叙事设计栈中触发一连串事件:
该
ConvaiNarrativeDesignTrigger通过OnTriggerEnter检测到了玩家,并调用了InvokeTrigger()使用你所选择的触发器名称。SDK 会先将触发器加入队列,直到角色的实时会话开启,然后发送一个
触发消息通过 RTVI 连接发送到 Convai 后端。后端会沿着与该触发器名称匹配的边推进叙事图谱,并返回一个
behavior-tree-response包含新章节 ID 的消息。ConvaiNarrativeDesignManager将传入的章节 ID 与其本地的UnitySectionEventConfig列表进行匹配,并触发OnSectionStart在匹配条目上的……你的
Debug.Log监听器运行,确认控制台中的章节变更。
从这一刻起,角色的目标和对话行为将反映新章节的配置。
结论
现在你已经拥有一个完全通过检查器驱动的可用叙事设计配置。该配置对所有内容都使用默认设置。若要进一步深入:
设置叙事设计管理器 ——配置章节事件、了解同步状态面板,并探索全局事件。
设置 Narrative Design 触发器 ——切换激活模式、配置队列行为,并绑定触发器事件。
模板键:动态叙事变量 ——将玩家姓名或场景参数注入角色的目标中。
最后更新于
这有帮助吗?