feat: FlowAsync调整
This commit is contained in:
+16
-6
@@ -86,6 +86,15 @@ Flow ID 就是 Yarn 中填写的动画名。建议使用有明确含义且不易
|
||||
3. 点击顶部 **Validate**,底部 **Validation** 中不能有 Error。
|
||||
4. 点击顶部 **Save** 保存。
|
||||
|
||||
### Flow 的异步完成配置
|
||||
|
||||
选择 Flow 后,可以在右侧 **Animation Flow** 区域设置 **Async Completion**。该配置只在 Flow 的终点为 `Loop` 时生效:
|
||||
|
||||
- `Complete On Terminal Loop Start`:默认值。所有前置节点播放完成并显示终点 Loop 第一帧后,异步调用继续执行;终点 Loop 在后台持续循环。
|
||||
- `Wait For Terminal Loop First Cycle`:等待前置节点和终点 Loop 第一轮全部播放完成后,异步调用继续执行。
|
||||
|
||||
终点不是 `Loop` 时,两种配置行为相同,都会等待整条 Flow 自然结束。
|
||||
|
||||
## 4. Yarn 调用
|
||||
|
||||
### 初始化角色
|
||||
@@ -163,17 +172,17 @@ hs: 戴上“实实”牌帽子,给你的头顶添件宝!
|
||||
|
||||
Yarn 会立即继续对白,Flow 则在后台按照连线依次播放。适合整段表演与对白同时发生的情况。
|
||||
|
||||
#### Flow:播放到终点首轮后再继续 Yarn
|
||||
#### Flow:按 Flow 配置等待后再继续 Yarn
|
||||
|
||||
```yarn
|
||||
<<change_actor_state_async 摘帽到伸手_Flow 火山>>
|
||||
// Flow 的前置动作和终点 Loop 首轮播放完后,才执行这里
|
||||
// 默认在前置动作结束、终点 Loop 首帧显示后执行这里
|
||||
```
|
||||
|
||||
`change_actor_state_async` 会从入口开始等待整条 Flow:
|
||||
|
||||
- 终点为非循环 Clip:等待所有节点自然播放结束;
|
||||
- `前置动作 → 终点 Loop` 的 Flow:等待前置动作和终点 Loop 的第一轮全部结束。
|
||||
- `前置动作 → 终点 Loop` 的 Flow:根据 **Async Completion**,在终点 Loop 开始时完成,或等待其第一轮结束。
|
||||
|
||||
如果终点是 `Loop`,命令返回后终点 Clip 仍会继续循环,直到被下一次状态切换替换。
|
||||
|
||||
@@ -184,7 +193,7 @@ Yarn 会立即继续对白,Flow 则在后台按照连线依次播放。适合
|
||||
| 单个 Clip | 不等待 | `<<change_actor_state ClipID 角色名>>` |
|
||||
| 单个 Clip | 等完整动画;Loop 等第一轮 | `<<change_actor_state_async ClipID 角色名>>` |
|
||||
| 一整条 Flow | 不等待 | `<<change_actor_state FlowID 角色名>>` |
|
||||
| 一整条 Flow | 等到终点首轮完成 | `<<change_actor_state_async FlowID 角色名>>` |
|
||||
| 一整条 Flow | 按 Flow 的 Async Completion 等待 | `<<change_actor_state_async FlowID 角色名>>` |
|
||||
|
||||
命令本身不需要标明目标是 Clip 还是 Flow。系统会用 ID 在当前角色的 Graph 中查找;因此 Clip ID 和 Flow ID 不能重名。
|
||||
|
||||
@@ -212,7 +221,7 @@ Clip ID、Flow ID、角色名或槽位名中包含空格时,必须加英文双
|
||||
|
||||
hs: 医——生——救——我——!
|
||||
|
||||
// 调用 Flow:等“摘帽”播完,再等终点“伸手表情idle”完成第一轮
|
||||
// 调用 Flow:默认等“摘帽”播完,并显示终点“伸手表情idle”首帧
|
||||
<<change_actor_state_async 摘帽到伸手_Flow 火山>>
|
||||
|
||||
// Flow 返回后,终点的伸手 idle 仍在循环
|
||||
@@ -233,6 +242,7 @@ hs: 我……没有活干了。
|
||||
- 只有最后一个 Node 设置了结束行为吗?
|
||||
- 需要持续显示的 idle 是否设置为 `Loop`?
|
||||
- Flow ID 是否与已有 Clip / Flow 重名?
|
||||
- Flow 的 **Async Completion** 是否符合剧情节奏?
|
||||
- Yarn 中的 ID 与 Graph 完全一致,包括空格和大小写吗?
|
||||
- 需要等动画时是否用了 `change_actor_state_async`?
|
||||
- 顶部 **Validate** 是否无 Error?
|
||||
@@ -254,7 +264,7 @@ Yarn 中传入的是 Clip ID 或 Flow ID,不是资源文件名、Graph 名或
|
||||
|
||||
**循环动画导致剧情无法继续**
|
||||
|
||||
使用 `change_actor_state_async` 等待 Loop 时,只会等待第一轮,不会无限阻塞。如果仍未继续,先运行 **Validate** 检查 Flow 路径和结尾配置。
|
||||
直接异步播放 Loop Clip 时只等待第一轮。异步播放 Flow 时,默认进入终点 Loop 即继续,也可以通过 **Async Completion** 配置为等待终点 Loop 第一轮。如果仍未继续,先检查是否还停在前置节点、有效速度是否为 0,并运行 **Validate** 检查 Flow 路径和结尾配置。
|
||||
|
||||
**想让 Flow 中途停住**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user