178 lines
7.5 KiB
Markdown
178 lines
7.5 KiB
Markdown
# 帧动画系统第三阶段手动测试
|
||
|
||
## 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 和 FlowEditorData;Graph 只更新自身 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 无持续异常;重新打开项目后资产内容和引用保持稳定。
|