> For the complete documentation index, see [llms.txt](https://docs.convai.com/api-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-examples.md).

# 情绪示例

这些场景展示了在……上使用情绪系统的常见方式 `UConvaiChatbotComponent`。每个场景都是独立的，并假设角色已经拥有可用的 `Convai 聊天机器人` 组件。所有函数和属性的 Blueprint 参考见 [情绪 Blueprint 参考](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-blueprint-reference.md).

***

### 场景 1：强制指定情绪

**情境：** 一段脚本化的安全简报需要虚拟讲师在特定时刻表现出担忧，而不管 Convai 发送什么。

#### Blueprint 步骤

1. 获取对 `Convai 聊天机器人` 角色上的组件的引用。
2. 调用 `强制设置情绪`。将 **基本情绪** 到 `难过`, **强度** 到 `更强烈`，以及 **重置其他情绪** 到 `true`。应用的分数将是 `1.0` （即 `更强烈` 乘数）。
3. `情绪状态更改时` 会在调用完成后立即触发。如果你的处理器将分数映射到形态目标，请调用 `获取情绪分数` 用于 `难过` 并使用返回值应用到 `设置形态目标`.

**验证：** `获取情绪分数` 用于 `难过` 返回 `1.0` ，角色的脸会在映射的形态目标上显示悲伤表情。

{% hint style="info" %}
当 `情绪状态更改时` 由……触发 `强制设置情绪`，则 **交互玩家组件** 输出引脚为 `null`。在处理器中使用它之前，请先对该引脚进行空值检查。
{% endhint %}

***

### 场景 2：在过场动画期间锁定情绪状态

**情境：** 过场动画必须让角色保持愤怒表情，而 Convai 继续发送那些应被抑制的对话驱动更新。

#### Blueprint 步骤

1. 在过场动画开始前，调用 `强制设置情绪` 其带有 **基本情绪** = `生气`, **强度** = `基本`, **重置其他情绪** = `true` 以建立所需的表情。
2. 设置 `锁定情绪状态` 到 `true` 在 `Convai 聊天机器人` 组件。过场动画期间到达的所有服务器情绪更新都会被静默丢弃，并且 `情绪状态更改时` 在锁定期间，对于由服务器驱动的更新不会触发。
3. 如果表情尚未由你的事件处理器驱动，请调用 `获取情绪分数` 用于 `生气` 并将返回值应用到相应的形态目标。
4. 当过场动画结束时，设置 `锁定情绪状态` 再切换回 `false`。下一次服务器情绪更新将替换锁定状态，并再次触发事件。

你也可以设置 `锁定情绪状态` 到 `true` 而无需先前的 `强制设置情绪` ，将角色冻结在过场动画开始时所处的表情。重置 `锁定情绪状态` 到 `false` ，当过场动画结束时。

**验证：** 在过场动画期间，即使角色说话，愤怒表情也会保持不变。解锁后，新的语音会生成更新的表情，并且 `情绪状态更改时` 会再次触发。

***

### 场景 3：读取情绪分数以驱动 VFX 效果

**情境：** 角色周围的粒子系统应随着角色的恐惧分数上升而增强——例如，在医疗培训模拟中指示不安的视觉光环。

#### Blueprint 步骤

1. 订阅 `情绪状态更改时` 在你的角色 Blueprint 中。
2. 在事件处理器中，调用 `获取情绪分数` 其带有 **情绪** 设置为 `害怕`。返回值是一个 `float` 在 `0.0`–`1.0`.
3. 将返回值传入 **速率缩放** 或 **强度** 参数，使用你的粒子组件中的 `设置浮点参数`.

同样的模式适用于任何 `EBasicEmotions` 值——可用分数驱动 UI 量表、材质参数、音高或任何其他数据驱动系统。

**验证：** 当角色说出带有恐惧内容的话语时，粒子效果会随 `害怕` 分数的提升而增强。

***

### 场景 4：通过偏移调参放大所有情绪

**情境：** 测试表明，在目标光照和预期镜头距离下，角色的情绪太微妙，难以清楚辨认。

#### Blueprint 步骤

1. 选择 `Convai 聊天机器人` 组件在 **Details** 面板。找到 **情绪偏移** 在 **Convai** 类别下。
2. 将其设置为 `0.4` ，以将之后所有由服务器驱动的分数计算提高 `0.4` ，然后再钳制到 `0.0`–`1.0`.
3. 要在运行时从 Blueprint 设置它，请获取 chatbot 组件的引用，从它拖出，并使用一个 **设置** 节点于 `情绪偏移` 属性访问。

较低 `情绪偏移` 如下 `0.0` ，以生成一个更克制的角色，让所有表情都被压低。

**验证：** 在与角色对话后，表情在预期镜头距离下会更清楚地显示，并且 `获取情绪分数` 返回的值会比偏移更改前更高。

{% hint style="info" %}
`情绪偏移` 仅适用于由服务器驱动的更新——对通过 `强制设置情绪`设置的分数没有影响。若要放大被强制的表情，请改为选择 `更强烈` 作为强度级别。
{% endhint %}

***

### 场景 5：恢复为中立表情

**情境：** 在某个强制或锁定了特定情绪的场景之后，角色必须在下一次交互开始前回到完全中立的静止姿势。

#### Blueprint 步骤

1. 调用 `重置情绪状态` 在 `Convai 聊天机器人` 组件。这会将所有情绪分数清零。 `情绪状态更改时` 会立即在其后触发。
2. 在你的事件处理器中（或在重置后直接），调用 `获取情绪分数` 对你驱动的每个情绪类别都执行——所有分数都将被 `0.0`.
3. 使用 `设置形态目标` 为每个已映射的形态目标将网格应用零权重。角色的脸会回到静止姿势。

**验证：** 所有情绪分数都显示为 `0.0` ，并且角色的脸会在下一次交互前回到默认静止姿势。

***

### 场景 6：在 Animation Blueprint 中驱动混合姿势

**情境：** 角色的表情应使用 Unreal 的姿势混合系统在各个姿势之间混合，而不是直接写入形态目标——例如，将情绪姿势与现有的移动或程序动画结合起来。

#### Blueprint 步骤

1. 在角色的 **Animation Blueprint**中，添加一个名为 `SurpriseWeight` 的浮点变量（或任何与你目标情绪对应的名称）。
2. 在 **事件 Blueprint 更新动画**中，获取所属 Actor 的引用，将其转换为你的角色类，并获取 `Convai 聊天机器人` 组件。
3. 调用 `获取情绪分数` 其带有 **情绪** 设置为 `惊讶`。将返回值连接到一个 **设置** 节点，用于 `SurpriseWeight`。这会在每个动画 tick 中运行。
4. 在 **AnimGraph**中，添加一个 **按浮点值混合姿势** 节点。将基础姿势连接到输入 **A**，将你的惊讶姿势（或姿势资源）连接到输入 **B**，并将 `SurpriseWeight` 添加到 **Alpha** 引脚连接到该引脚。
5. 编译并在编辑器内运行（Play In Editor）中测试。角色会随着 `惊讶` 分数上升而向惊讶姿势混合。

这种方法将表情混合保留在 Animation Blueprint 内部，避免了调用 `设置形态目标` 的需要。你可以叠加多个 **按浮点值混合姿势** 节点——每个情绪类别一个——，完全通过 Animation Blueprint 状态驱动整套表情骨架。

**验证：** 在编辑器内运行时，角色会随着 `惊讶` 对话中的分数上升而平滑地向惊讶姿势混合。

***

### 相关页面

{% content-ref url="/pages/9ac48061a03a0400ae6e1769df358c2fb2a82536" %}
[Emotion Blueprint 参考](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-blueprint-reference.md)
{% endcontent-ref %}

{% content-ref url="/pages/c3081281b873e1a1b00439a147d3db6877743003" %}
[情绪系统的工作原理](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/how-the-emotion-system-works.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/convai-unreal-engine-plugin/features/emotion/emotion-examples.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
