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

7.5 KiB
Raw Blame History

帧动画系统第三阶段手动测试

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 无持续异常;重新打开项目后资产内容和引用保持稳定。