对话动画使用示例
四个渐进式示例——从仅 Inspector 设置到运行时库切换——涵盖训练、医疗、企业和自适应评估场景。
这些示例从纯 Inspector 配置逐步过渡到用于运行时行为变化的 C# 脚本。请先查看示例 1,以理解基础配置模式,然后再阅读后续示例,以了解何时以及如何使用脚本。
示例 1 — 工业安全讲师
场景: 工厂车间培训模拟中有一位 NPC 安全讲师,负责讲解操作流程。这个角色需要权威、克制的手势,以展现自信而不显得分散注意力。
设置(仅 Inspector):
分配
ConvaiSamplesShared_DialogAnimationLib_Balanced到 库将 Balanced
DialogueAnimationRuntimeConfig到 配置设置 Character Gender 到 Male
Balanced 库包含亲和度分布较低的片段, EmotionBiasStrength 从而生成一致的手势风格,不受检测到的情绪影响。这适合以教学为主、可预测性比表现力更重要的内容。
预期结果: 讲师会播放稳定的待机循环,并在讲话时切换到克制的手势片段。片段转换是渐进式的(默认 0.95 秒交叉淡化)。每次发言结束后,talk 层会平滑淡出。
示例 2 — 医疗患者演员
场景: 医疗模拟中有一名患者角色,起初以受控的动作(躺在医院病床上)开始问诊,随着焦虑上升变得更具表现力。手势库必须在运行时根据叙事触发器进行切换。
设置:
先使用 Subtle 库进行 Inspector 配置:
分配
ConvaiSamplesShared_DialogAnimationLib_Subtle到 库将 Subtle 配置分配给 配置
设置 Character Gender 到 Female
然后在焦虑事件触发时,通过 C# 切换到 Expressive 库:
预期结果: 在平静的问诊阶段,角色使用克制的待机和对话片段。之后 OnAnxietyEventTriggered() 被触发后,手势会在下一次片段选择周期中立即切换到更具表现力的片段池。不会重启或中断——交叉淡化会处理这一过渡。
示例 3 — 多角色企业入职引导
场景: 企业入职引导模拟中有两名讲师角色并排站立:一名资深,一名新手。它们共享相同的 DialogueAnimationRuntimeConfig 以保持时间一致性,但使用不同的库和性别设置来创建各自独特的视觉个性。
关于片段选择的多样性: 为了防止两个角色在同一帧选择到相同的片段,请在 DeterministicSeed 为每个角色的配置资源在 Inspector 中设置不同的值。 DeterministicSeed 是在制作时按资源配置的——不能通过脚本 API 设置。
设置:
创建两个 DialogueAnimationRuntimeConfig 资源(或复制一个)。在 Inspector 中,为每个资源设置不同的 DeterministicSeed 值。然后为每个角色分别分配:
为每个角色设置不同的库:
资深:
ConvaiSamplesShared_DialogAnimationLib_Balanced,Gender = Female新手:
ConvaiSamplesShared_DialogAnimationLib_Expresive,Gender = Male
预期结果: 两个角色都以相同的交叉淡化时长和能量响应(共享时间配置)进行动画,但使用不同的片段池和按性别筛选的选择,因此即使同时说话,看起来也各不相同。
示例 4 — 自适应评估模式
场景: 军事训练模拟有两个阶段:轻松的学习阶段和正式的评估阶段。在评估期间,NPC 评估员的动画风格必须改变,以体现评估的严肃性——更短的待机停留、更快的过渡、更正式的手势。
设置:
编写两个配置:
RelaxedConfig—IdleMinHoldSeconds: 8,IdleMaxHoldSeconds: 20,TalkCrossFadeDuration: 0.75AssessmentConfig—IdleMinHoldSeconds: 3,IdleMaxHoldSeconds: 8,TalkCrossFadeDuration: 0.4
在阶段变化时通过 C# 切换:
预期结果: 在学习阶段,评估员的待机动画以较为轻松的节奏变化,停留时间较长。当 BeginAssessmentPhase() 被调用时,待机切换会更频繁,过渡更快,角色的手势节奏传达出更强的审视感——而无需对对话或会话逻辑进行任何代码更改。
下一步
有关完整的属性和方法参考,请参阅 Scripting API 页面。有关静默 talk 层或缺失动画等常见故障的帮助,请参阅故障排除。
最后更新于
这有帮助吗?