叙事设计使用示例
四个完整的叙事设计示例,从单触发欢迎序列到带动态反馈的自适应多分段场景。
示例 1:脚本化欢迎序列
设置
2
示例 2:分支对话
设置
public class OrientationController : MonoBehaviour
{
[SerializeField] private ConvaiCharacter _character;
[SerializeField] private ConvaiNarrativeDesignManager _narrativeManager;
[SerializeField] private TextMeshProUGUI _activeTopicLabel;
private void OnEnable()
{
_character.NarrativeDesign.OnSectionChanged += OnSectionChanged;
}
private void OnDisable()
{
_character.NarrativeDesign.OnSectionChanged -= OnSectionChanged;
}
// 由 UI 按钮调用
public void SelectTopic(string triggerName)
{
_character.NarrativeDesign.InvokeTrigger(triggerName);
}
// 由自由文本输入框的提交事件调用——纯文本上下文注入
// 角色会用自己的话自然回应
public void AskFollowUp(string userQuestion)
{
_character.NarrativeDesign.InvokeSpeech(userQuestion);
}
// 当需要脚本化公告时调用——角色会逐字说出这段文本
public void AnnounceToUser(string announcement)
{
_character.NarrativeDesign.InvokeSpeech($"<speak>{announcement}</speak>");
}
private void OnSectionChanged(string previous, string next)
{
// 更新面包屑 UI——从管理器中查找可读名称
if (_narrativeManager.FindSectionConfig(next) is { } cfg)
_activeTopicLabel.text = cfg.SectionName;
}
}示例 3:基于接近触发的展厅导览
设置
示例 4:带动态反馈的自适应场景
会话生命周期
实现
下一步
叙事设计脚本参考叙事设计故障排查最后更新于
这有帮助吗?