摄像机区域的架构改动

This commit is contained in:
2026-05-15 14:47:24 +08:00
parent 1b37297585
commit f264329751
3591 changed files with 1687228 additions and 446503 deletions

View File

@@ -0,0 +1,97 @@
# Zeling v2 · 测试方案总索引
> **文档版本**1.0
> **创建日期**2026-05-13
> **覆盖范围**`Assets/Scripts/` 全量代码
> **Unity 版本**2022.3 LTS
> **测试框架**Unity Test FrameworkNUnit
---
## 一、测试策略概述
本项目测试分为两大类:
### 1.1 单元测试EditMode / 代码测试)
凡满足以下条件之一的逻辑,**必须编写 NUnit 单元测试**
- 纯 C# 类(无 `MonoBehaviour` 继承),逻辑完全与 Unity 运行时解耦
- 有明确输入/输出的算法(序列化、状态机转换、数值计算)
- 可通过 Mock / Stub 隔离 Unity 依赖的组件
测试文件存放于 `Assets/Tests/EditMode/`,程序集 `BaseGames.Tests.EditMode`
### 1.2 手动测试Unity Editor Play Mode
需要在 Unity Editor 中运行 Play Mode 的场景验证:
- 动画状态机Animancer FSM与物理交互
- HitBox/HurtBox 碰撞判定
- 敌人 AI 行为Behavior Designer
- 场景切换与相机系统
- VFX/Feedback 链路
### 1.3 测试前必做环境检查
每次进行任何测试前,请先完成以下检查:
| 检查项 | 操作 |
|--------|------|
| Console 无红色 Error | `Window → General → Console`Error 数量 = 0 |
| Addressables 已构建 | `Window → Asset Management → Addressables → Groups → Build → New Build → Default Build Script` |
| NavSurface 已烘焙 | 选中 NavSurface GameObject → Inspector → BakeScene 视图显示蓝绿网格 |
| SO 事件资产已生成 | `BaseGames → Tools → Create Event Channel Assets``Assets/Data/Events/` 下存在 `.asset` 文件 |
| Physics2D Layer 矩阵已配置 | `Edit → Project Settings → Physics 2D` → PlayerHitBox ↔ EnemyHurtBox 开启碰撞 |
---
## 二、文档列表
### 单元测试文档(包含可直接运行的 C# 测试代码)
| 文档 | 覆盖模块 | 测试类型 |
|------|---------|---------|
| [01_Unit_EventSystem_ServiceLocator.md](01_Unit_EventSystem_ServiceLocator.md) | SO 事件系统、ServiceLocator、CompositeDisposable | EditMode 单元测试 |
| [02_Unit_SaveSystem.md](02_Unit_SaveSystem.md) | SaveMigrator、SaveData 序列化、Checksum | EditMode 单元测试 |
| [03_Unit_StatusEffects.md](03_Unit_StatusEffects.md) | StatusEffect 叠加/互斥/到期(扩展现有测试) | EditMode 单元测试 |
| [04_Unit_GameStateMachine.md](04_Unit_GameStateMachine.md) | GameStateMachine 状态注册/转换/非法转换 | EditMode 单元测试 |
### 手动测试文档Unity Editor Play Mode 操作步骤)
| 文档 | 覆盖模块 | 测试类型 |
|------|---------|---------|
| [05_Manual_Core_Infrastructure.md](05_Manual_Core_Infrastructure.md) | ServiceLocator 初始化、ObjectPool、Addressables | Play Mode 手动 |
| [06_Manual_PlayerFSM_Movement.md](06_Manual_PlayerFSM_Movement.md) | 玩家 FSM、移动、跳跃、冲刺、蹬墙、治疗 | Play Mode 手动 |
| [07_Manual_CombatSystem.md](07_Manual_CombatSystem.md) | 战斗管道、弹反、护盾、霸体、状态效果 | Play Mode 手动 |
| [08_Manual_EnemySystem.md](08_Manual_EnemySystem.md) | 敌人 AI、寻路、远程/飞行/Boss | Play Mode 手动 |
| [09_Manual_WorldSystem.md](09_Manual_WorldSystem.md) | 房间切换、互动机关、液态谜题、存档点 | Play Mode 手动 |
| [10_Manual_ProgressionSystem.md](10_Manual_ProgressionSystem.md) | 技能/护符/任务/成就/商店/形态切换 | Play Mode 手动 |
| [11_Manual_UIAudioVFX.md](11_Manual_UIAudioVFX.md) | HUD、UI 面板、音频 Mixer、VFX/Feedback | Play Mode 手动 |
| [12_Manual_CameraSystem.md](12_Manual_CameraSystem.md) | 区域相机切换、CinemachineConfiner、屏幕抖动 | Play Mode 手动 |
---
## 三、运行单元测试
1. 打开 Unity Editor
2. 菜单 `Window → General → Test Runner`
3.**Test Runner** 窗口选择 `EditMode` 标签页
4. 点击 `Run All` 或展开 `BaseGames.Tests.EditMode` 运行指定测试套件
5. 所有测试应显示 **绿色勾**,无红色失败
### 新增测试文件操作
1.`Assets/Tests/EditMode/` 下创建新的 `.cs` 文件
2. 确保文件头部有正确命名空间和 `[TestFixture]` 特性
3. 确保 `.asmdef` 引用了被测程序集(见各单元测试文档说明)
---
## 四、缺陷登记
发现问题时,在下表记录:
| BUG-ID | 模块 | 描述 | 复现步骤 | 严重程度 | 状态 |
|--------|------|------|---------|---------|------|
| BUG-001 | | | | P0/P1/P2/P3 | 开放/修复 |