配置动作
定义动作集、启用角色动作,并注册环境对象和角色,以便 Convai 可以引用它们。
该 Convai Chatbot 组件的 环境 属性控制角色动作的各个方面:角色可以执行哪些动作、它可以引用哪些对象和角色,以及是否完全启用动作。请在编辑器中设置动作模板并注册对象;在进入播放模式前编译角色 Blueprint 以保存更改。
“Environment” 属性
该 Convai Chatbot 组件(UConvaiChatbotComponent)公开一个 环境 类型为 FConvaiEnvironmentData 中创建该资源 Convai | 操作 详细信息面板的类别。
FConvaiEnvironmentData 具有以下顶级字段:
bEnableActions
bool
主开关。默认值为 true。当 false,不会有 action_config 在会话开始时发送,且操作被禁用。
操作
TArray<FConvaiAction>
角色可以执行的操作模板。
对象
TArray<FConvaiObjectEntry>
角色可引用为操作目标的场景对象。
角色
TArray<FConvaiObjectEntry>
场景中的其他角色。
启用操作
启用操作 默认值为 true 在每个新的 Convai Chatbot 组件上——新建角色无需手动操作。若要为只需对话、不执行物理任务的角色禁用操作,请展开 环境 在详细信息面板中并取消勾选 启用操作.
定义操作模板
该中的每个条目 操作 数组都是一个 FConvaiAction 结构体,包含三个主要字段:
名称
FString
不含参数占位符的规范操作名称。必须与处理器名称匹配,包括空格和标点符号。
描述
FString
发送给 Convai 的可选自然语言提示,用于描述该操作的作用。
其他时序字段:
bWaitForBotSpeech
bool
false
当 true 且此操作在新序列中最先到达,则延迟触发,直到角色开始或结束说话。
DelayAfterBotSpeechSec
float
0.0
语音条件解决后的额外延迟(秒)。在以下情况下忽略: bWaitForBotSpeech 是 false.
默认操作
该 操作 数组默认预填充了四个条目:
移动到
目标 (Actor 引用)
导航到已注册的对象或角色目标。
跟随
角色 (Actor 引用)
跟随已注册的角色或玩家。
停止移动
—
停止导航。
等待
持续时间(秒) (数值)
等待指定时长。
默认 描述 这些模板上的值都是空的,除了 跟随,它随附 “跟随角色”。您可以根据需要重命名、描述或移除任何默认操作。要移除默认操作,请在数组中选中它并点击删除按钮。
添加自定义操作
添加参数(可选)
将条目添加到 参数 如果该操作需要有类型的输入。参见 带参数的操作.
编译并生成处理器脚手架
点击 编译 在角色 Blueprint 上,然后生成处理器脚手架。参见 构建自定义操作处理器.
编写建议
简短、明确的操作名称
Convai 按名称匹配模板。 “跳舞” 比以下更容易作为目标: “执行舞蹈动画”.
简短或空的说明
说明会随操作契约发送。额外的文字只会增加上下文,却不会改善行为。
明确区分的对象名称
使用 “立方体” 和 “枪” 而不是 “立方体” 和 “cube2” 这样引用参数才能可靠解析。
选项 用于固定变体
一个 舞蹈 操作,带有一个 类型 参数,以及三个 选项 比三个带重复说明的独立舞蹈模板更好。
先编译再播放
新建或编辑的操作模板在 Blueprint 编译之前对处理器不可用。
操作名称必须与所属 Actor 上的 Blueprint 函数或事件名称匹配,包括空格和标点符号。Unreal 解析处理器名称时不区分大小写,但 “停止移动” 和 “StopMoving” 是不同的名称。
注册对象
该 对象 数组包含 FConvaiObjectEntry 可交互场景对象的结构体。每个条目包含:
名称
FString
角色用来识别此对象的唯一标签。
引用
TWeakObjectPtr<AActor>
此条目所代表的关卡内 Actor。
描述
FString
提供给 Convai 的可选自然语言说明。
MoveTargetMode
EConvaiMoveTarget
Actor 作为目标 (在 Actor 边界处停止)或 组件作为目标 (走到特定的子组件)。
接受半径
float
AI 必须靠近到多近才算移动完成。默认值 150 厘米。
ComponentName
FString
可选的子组件名称,用于 组件作为目标 模式。
SocketOrBoneName
FName
匹配组件上的可选 Socket 或骨骼名称。
bStepOntoBounds
bool
当 true,AI 会走到对象顶部,而不是停在其边缘。
要添加对象:
点击 + 在该
对象数组。将
名称为一个简短的唯一标签。分配
引用使用滴管将其分配给目标 Actor。将
描述如有帮助,可填写。调整
MoveTargetMode和接受半径以提高导航精度。
使用 UConvaiObjectComponent 用于自动注册
UConvaiObjectComponent 用于自动注册不是手动填充 对象 数组,您可以添加 UConvaiObjectComponent 到任意场景 Actor 上。这些组件会在会话开始时通过 UConvaiSubsystem自动向所有聊天机器人注册。这是包含大量可交互对象的关卡的推荐方式。
参见 场景元数据 获取完整文档请参见 UConvaiObjectComponent.
注册角色
该 角色 数组的工作方式与……完全相同 对象 但表示聊天机器人可在以下操作中引用的其他 NPC 或 AI 角色,例如 跟随.
在会话开始时,当 bAutoFillConversationPartnerFromPlayer 是 true 在聊天机器人组件上启用时,插件可以自动将玩家对话伙伴添加到角色列表。插件会使用找到的第一个 UConvaiPlayerComponent 它,并在需要时回退到玩家 Pawn 0 中创建一个新的 C# 脚本, 用户 。此属性位于 Convai | 会话 详细信息面板的类别中,默认值为 true。使用 SetConversationPartner 当您需要注册非玩家对话伙伴时。
运行时修改
运行时修改适用于高级用例——大多数项目只需要上面的编辑器期设置。
您可以在运行时使用以下方法添加或移除条目: UConvaiChatbotComponent:
AddObject(Object, bFlushImmediately)
添加一个 FConvaiObjectEntry 到环境中。
AddObjects(Objects, bFlushImmediately)
一次添加多个条目。
RemoveObject(ObjectName, bFlushImmediately)
按名称移除。
RemoveObjects(ObjectNames, bFlushImmediately)
按名称移除多个。
ClearObjects(bFlushImmediately)
移除所有对象。
AddCharacter(Character, bFlushImmediately)
添加一个角色条目。
AddCharacters(Characters, bFlushImmediately)
一次添加多个角色条目。
RemoveCharacter(CharacterName, bFlushImmediately)
按名称移除一个角色。
RemoveCharacters(CharacterNames, bFlushImmediately)
按名称移除多个角色。
ClearCharacters(bFlushImmediately)
移除所有角色。
运行时对象和角色变更会更新本地 EnvironmentData 镜像。在线会话中,不属于连接时场景元数据快照的更改会被批处理并通过 update-scene-metadata ,从而让 Convai 接收更新后的场景上下文。传入 bFlushImmediately = true 仅在必须立即更新时使用,因为频繁刷新会产生过多网络流量。
高级:GatherEnvironmentExtras
仅在环境必须根据会话开始时的运行时状态变化时才使用此重写。重写 NPC Actor 上的 收集环境额外内容 Blueprint 原生事件,以便在会话开始前追加额外的操作、对象或角色。该重写在 StartSession 时执行一次,并且是追加式的——不会替换详细信息面板中的默认值。
下一步
构建自定义动作处理器参数化动作动作 Blueprint 参考最后更新于
这有帮助吗?