Files
aibis-dream/Docs/帧动画系统第三阶段手动测试.md
T
2026-07-15 15:14:18 +08:00

178 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 帧动画系统第三阶段手动测试
## 1. 测试目标
验证 `FrameAnimationGraph Editor` 的资源浏览、Manual Clip 编辑、正式重命名、安全删除、ImportSource 集成、校验定位、Undo/Redo 和本机工作区状态。
本阶段中央区域仍是画布占位区,不测试节点创建、连线、Flow 创建或动画预览。
## 2. 测试前准备
1. 使用 Unity 2022.3.7f1c1 打开项目,等待脚本和资产导入完成。
2. 备份需要保留的测试 Graph;删除 sub-asset 和刷新 Imported Clip 都会修改资产。
3. 可使用现有 `ImportSampleGraph`,也可以通过 `Tools > Frame Animation > Rebuild Import Sample` 重建标准样例。
4. 若重建样例,确认 `Assets/GameContent/Test/FrameAnimation/Import/` 下没有需要保留的手工改动。
5. 打开 `Window > Aibis Dream > Frame Animation Graph Editor`
## 3. 打开与布局
### 3.1 打开入口
分别验证以下入口会打开同一个工作台并选中正确 Graph:
- 菜单打开后,从顶部 ObjectField 选择 Graph。
- 在 Project 中双击 `FrameAnimationGraph`
- 在 Graph Inspector 点击 `Open Frame Animation Graph Editor`
- 对仅被一个 Graph 引用的 FrameClip,在 Clip Inspector 点击打开按钮或双击资产。
预期:窗口一次只编辑一个 Graph;切换 Graph 后,前一个 Graph 的属性修改不会丢失。
### 3.2 布局持久化
1. 拖动左侧、右侧和底部面板尺寸。
2. 切换资源标签、搜索词、筛选、排序和底部标签。
3. 关闭并重新打开窗口,再重载脚本或重启 Unity。
预期:面板尺寸、折叠状态、资源标签、搜索筛选、排序、Graph 和有效选择得到恢复;不同 Graph 的状态互不覆盖。
## 4. 资源浏览与定位
### 4.1 Clip 查询
1. 在 Clips 中依次搜索 id、displayName、sourceTagName 和来源名称。
2. 测试 Manual、Imported、Normal、Missing、Referenced、Unused 筛选。
3. 测试名称、来源、帧数、时长、Missing 和引用数排序。
4. 清空搜索,确认按 Manual 和 ImportSource 分组;输入搜索词后确认结果变为扁平列表。
预期:每行显示帧数、时长、来源、Missing、Node 引用数和问题标记,结果顺序稳定。
### 4.2 引用定位
1. 选择无 Node 引用的 Clip,点击 `Locate References`
2. 选择单引用 Clip,再次定位。
3. 选择多引用 Clip,再次定位并从菜单选择一个 Node。
预期:无引用时显示提示;单引用直接定位;多引用显示选择菜单。Node 在右侧只读显示,中央占位区同步显示当前定位对象。
### 4.3 校验定位
人为制造一个安全的校验问题,例如将 Manual Frame 的 durationMs 改为 0,然后点击 `Validate`
预期:Validation 出现结构化条目;点击条目会切换到正确资源标签并显示对应对象和处理建议。
## 5. Manual Clip
### 5.1 创建 Graph 内 Manual Clip
1. 点击 `New Manual`
2. 输入唯一 id 和 displayName,保持“外部独立 .asset”关闭。
3. 创建后检查 Project 资产和 Clip 属性。
预期:Clip 是当前 Graph 的 sub-asset;首始帧表为空;结束行为取 Graph 的 `New Manual End Behavior`
### 5.2 创建外部 Manual Clip
重复创建流程并勾选外部资产,保存到测试目录。
预期:生成独立 `.asset`,同时加入当前 Graph;取消保存对话框不会产生半成品。
### 5.3 添加已有外部 Clip
点击 `Add Existing`,分别尝试:
- 合法的外部 Manual Clip。
- Imported Clip。
- 其他 Graph 的 sub-asset Clip。
- 当前 Graph 已引用的 Clip。
- id 与当前 Clip 或 Flow 冲突的 Clip。
预期:仅第一种成功,其余给出明确原因。
### 5.4 编辑帧表
对 Manual Clip 执行新增、复制、删除和拖拽排序,并编辑 Sprite 与 durationMs。
预期:新帧默认为 Sprite 空、durationMs 100、frameName 空、sourceIndex -1;空 Sprite 合法;frameName/sourceIndex 只读。Undo/Redo 能恢复每一步。
### 5.5 Imported 转 Manual
选择 Imported Clip,点击 `Copy As Manual`,分别测试 Graph sub-asset 和外部资产。
预期:帧表和用户字段被复制,Sprite 引用复用;新 Clip 的 ImportInfo 为空,之后刷新来源不会修改它。Imported Clip 原帧表始终只读。
## 6. 正式重命名
### 6.1 Clip ID
1. 选择被 Node 和 defaultPlayableId 引用的 Clip。
2. 点击 `Rename Clip ID`,观察警告和受影响引用数。
3. 尝试空 id、与 Clip 冲突、与 Flow 冲突和合法 id。
4. 成功后执行 Undo/Redo。
预期:普通属性区不能直接编辑 id;合法重命名会原子更新 Clip、全部 Node.clipId 和 defaultPlayableId。Undo/Redo 不产生一半新一半旧的状态。
对被两个 Graph 共享的外部 Manual Clip 重复测试。
预期:禁止重命名,并列出引用它的 Graph。
### 6.2 Flow 与 Graph ID
分别通过正式按钮重命名 Flow 和 Graph。
预期:Flow 同步更新 defaultPlayableId 和 FlowEditorDataGraph 只更新自身 id。两个对话框均明确提示外部字符串契约无法自动迁移。
## 7. 删除与所有权
### 7.1 Clip
依次测试:
- 被 Node 引用的 Clip。
- 被 defaultPlayableId 引用的 Clip。
- 未引用的外部 Manual Clip。
- 未引用的 Graph sub-asset Manual Clip。
- 未引用且非 Missing 的 Imported Clip。
预期:前两种在确认前被阻止并可据提示定位;外部 Clip 仅移除当前 Graph 引用且 `.asset` 保留;sub-asset 从 Graph 和资产文件中删除;非 Missing Imported Clip 会提示下次刷新可能重建。
### 7.2 Flow
测试删除默认 Flow 和非默认 Flow。
预期:默认 Flow 被阻止;非默认 Flow 仅删除 Flow 定义,不删除 Node 或 Edge。
### 7.3 ImportSource
1. 删除仍有关联 Imported Clip 的来源。
2. 将关联 Clip 删除或复制为 Manual 后再次删除来源。
预期:有关联 Clip 时阻止并列出 Clip;允许删除时不会删除 Texture、JSON、Sprite 或 SpriteRect。
## 8. 导入与差异
1. 在 Sources 中编辑 displayName、启用状态、Texture、JSON、pivot、切图模式和新 Clip 默认结束行为。
2. 检查 internalId 只读且可复制。
3. 分别执行单来源和全部来源 Preview、Refresh。
4. 对自动切图来源制造 SpriteRect 变化并拒绝确认,再重新刷新并确认。
5. 制造非法 JSON 后 Preview/Refresh。
预期:预览不修改资产;差异按 Added、Updated、Missing、Unchanged、Error 分组并可定位;切图变化必须确认;失败保留完整差异和错误,Graph、Clip、TextureImporter 不出现部分更新。
## 9. 保存、Undo 与异常恢复
1. 连续执行创建、帧编辑、重命名、删除和 Source 修改。
2. 逐步 Undo,再逐步 Redo。
3. 点击 Save,关闭 Unity 后重开项目。
4. 删除当前窗口正在编辑的测试 Graph。
预期:每个资产操作以具名事务恢复;列表、引用数和校验随 Undo/Redo 重建;保存和 Domain Reload 后数据稳定;资产删除后窗口自动清理失效 Graph 和选择,不抛出持续异常。
## 10. 通过标准
- 工作台所有入口、布局恢复和统一定位正常。
- Manual、Imported、外部资产和 Graph sub-asset 的所有权行为符合预期。
- id 只能正式重命名,引用迁移原子且可撤销。
- 删除不会留下悬空引用,也不会误删外部资产或导入源资源。
- Import Preview/Refresh、差异和综合校验能在同一窗口完成并准确定位。
- Console 无持续异常;重新打开项目后资产内容和引用保持稳定。