> 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-unity-sdk/features/character-actions/actions-editor.md).

# 动作编辑器

Convai Actions Editor 窗口参考——其四种模式、添加动作目录以及一键执行器配置。

Convai 操作编辑器负责定义 Convai 角色可以做什么——每个操作的名称、描述以及绑定的执行器——无需编辑 `ConvaiActionConfigSource` 直接进行。从其目录中添加内置执行器时，也会一并配置该执行器所需的配套组件，例如 `ConvaiGazeController` 或 `ConvaiBodyAnimationController`，并且在同一个可撤销步骤中完成。

### 打开窗口

选择 **Convai > 操作编辑器** 以打开窗口。一个 **Character** 工具栏中的字段用于选择显示哪个 `ConvaiCharacter`的操作，并且在场景中只有一个角色时会自动选择该角色。

### 模式

角色选择器下方的模式切换器可在同一角色的四个视图之间切换：

| 模式       | 显示                                                                                            |
| -------- | --------------------------------------------------------------------------------------------- |
| **动作**   | 默认视图：操作列表和所选操作的详情。                                                                            |
| **场景知识** | 角色的已知对象、已知角色以及初始注意力。                                                                          |
| **角色设置** | 该 `ConvaiActionDispatcher` （标记为 **Convai 操作运行器**）和 `ConvaiActionFeedbackRelay` 设置。            |
| **实时**   | 仅在运行模式下：当前正在运行的批次、最近批次的时间线，以及每个操作的运行次数。运行模式开始时会自动选中自身，并重命名 **会话回顾** 为在运行模式结束后、最后一轮会话录制仍可用时查看。 |

除以下模式外，所有模式都禁用编辑，并显示说明横幅： **实时** 当编辑器处于运行模式时。

### 操作列表与详情

左侧面板按每个操作显示一张卡片，分组为 **此角色** （直接在此角色上编写的操作），然后是每个已分配的 `ConvaiActionSet`。选择一张卡片后，会在右侧面板中以四个框显示其详情：

| 框             | 显示                                                                               |
| ------------- | -------------------------------------------------------------------------------- |
| **命令**        | 操作的名称、描述，以及以以下形式呈现的实时预览 `可以向此 Convai 角色提出："..."`.                                |
| **场景行为**      | 绑定的执行器组件及其解析状态，以及一个下拉菜单，列出所有 `IConvaiActionExecutor` 在角色层级中找到的组件，以及一个对象字段回退项。    |
| **试一试**       | 在不开始对话的情况下运行该操作——参见 [在不进行对话的情况下测试操作](#test-an-action-without-a-conversation) 下文。 |
| **高级** （默认折叠） | 参数、有效目标、超时、失败策略覆盖，以及语音门控。                                                        |

### 添加操作目录

点击 **+ 添加操作 ▾** 以打开目录。它列出携带以下内容的每个执行器 `[ConvaiActionArchetype]` ——随附、示例或项目定义——，按由以下内容构建的固定顺序排列 `ConvaiActionArchetypeCatalog.BuildMenuItems()`:

1. **推荐** ——经过筛选的内置执行器，它们声明了一个 `FeaturedOrder`，并按该顺序排序。
2. **更多现成操作** ——其余随附执行器，按字母顺序排列。
3. **示例操作** ——作为 SDK 示例随附的执行器，位于其自己的子菜单中。
4. **项目与包操作** ——第三方或项目定义的执行器，按家族分组到各自的子菜单中。

一个 **自定义（空）** 末尾的条目会创建一个空白操作，不预设名称、行为或参数。项目定义的执行器绝不会把经过筛选的 **推荐** 部分向下挤——无论存在多少项目特定执行器，内置项始终排在最前。

### 入门卡片

尚无操作的角色会在操作列表位置显示一个“添加你的第一个操作”引导区，并提供四张一键入门卡。每一张都是通过以下方式声明自己为入门项的内置执行器 `FeaturedOrder` 1–4：

| 顺序 | 入门   | 执行器                                |
| -- | ---- | ---------------------------------- |
| 1  | 走向目标 | `ConvaiWalkToActionExecutor`       |
| 2  | 跟随玩家 | `ConvaiFollowPlayerActionExecutor` |
| 3  | 看向目标 | `ConvaiLookAtActionExecutor`       |
| 4  | 播放手势 | `ConvaiPlayGestureActionExecutor`  |

选择入门卡会像从中选择该执行器一样准确地配置该执行器 **+ 添加操作 ▾** ——见 [一键配置](#one-click-provisioning) 下文。 **浏览所有现成操作…**，在入门卡旁边，会打开与工具栏按钮相同的目录。

### 一键配置

添加内置执行器——无论来自入门卡还是目录——都会作为一个可撤销的单一操作执行：

1. 一个新的 `ConvaiActionDefinition` 会根据执行器的 `[ConvaiActionArchetype]` 属性构建：其操作名称、描述、目标要求以及任何参数。
2. 执行器组件会添加到角色上；如果角色层级中已存在匹配的组件，则会复用该组件。
3. 如果执行器声明了一个 `RequiredPeerHint` ——例如 `ConvaiGazeController` 或 `ConvaiNavMeshLocomotion` ——且角色尚无匹配组件，则也会添加该组件。
4. 新定义会绑定到已添加或已复用的执行器，并追加到角色的操作列表中。

这正是使 **看向目标** 入门项同时添加两者 `ConvaiLookAtActionExecutor` 和 `ConvaiGazeController` 只需点击一次，并且 **走向目标** 同时添加两者 `ConvaiWalkToActionExecutor` 和 `ConvaiNavMeshLocomotion`。 *target* 对象而不是角色——例如 `ConvaiActionTargetGroup` 用于 Count Target Group 的组件，不会以这种方式配置，因为决定由哪个场景对象拥有它，是窗口无法代你做出的创作决策。

如果某个执行器的配套组件可以解析，但未被自动添加——例如 **自定义（空）** 并在之后绑定到执行器—— **场景行为** 该框提供一个一键 **添加并绑定** 按钮，按钮名称为执行器名称，例如 **添加并绑定 看向目标**.

### 在不进行对话的情况下测试操作

所选操作的 **试一试** 框会在不调用后端的情况下运行真实的分发路径：

* **在编辑模式下**，它是一个 **预览**：在试运行字段中输入一句话，它会按照运行时使用的相同目标解析层级进行检查，显示它会匹配哪个目标以及在第几步匹配。
* **在运行模式下**，它是一个 **测试运行**：从 **有效目标**中选择一个目标，填写任何参数，然后点击 **立即运行**。该运行会经过与真实 Convai 命令完全相同的分发路径，并以 ✓ 或 ✗ 报告结果，附带持续时间，失败时还会给出原因。

### 下一步

{% content-ref url="/pages/7f0d213ddc809cfd39ab2bc41492ddf8e54b6c19" %}
[角色动作快速入门](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/character-actions/quick-start.md)
{% endcontent-ref %}

{% content-ref url="/pages/f592d9dc3ad261e175159690b86cdd4b50bb4d81" %}
[动作执行器](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/character-actions/action-executors.md)
{% endcontent-ref %}

{% content-ref url="/pages/111bca064ba7041a987662d038af4d71d58a32cd" %}
[配置角色动作](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/character-actions/configuring-actions.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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/features/character-actions/actions-editor.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
