# 语言分析系统 - 设置指南 ## 🎯 概述 语言分析系统是一个独立的游戏系统,通过 `FixStateMachine` 管理状态切换。它包含记忆解密器等分析模式,与 `ExpressionManager` 完全分离。 ## 📦 新架构 ``` FixStateMachine (状态机) ├── FixState.LanguageAnalysis (新增状态) │ LanguageAnalysisManager (独立系统管理器) ├── MemoryDecryptorMode (记忆解密器) │ ├── MemoryDecryptorRenderer │ └── MemoryDecryptorInputHandler └── 未来可扩展其他分析模式... ExpressionManager (保持独立) └── LanguageParticleManager (粒子系统) ``` ## 🚀 快速设置步骤 ### 1. 在场景中创建系统 ``` Hierarchy: ├── GameSystems (或其他容器) │ └── LanguageAnalysisManager │ ├── Language Analysis View (GameObject - 视图容器) │ │ ├── Canvas │ │ │ ├── GridContainer (RectTransform) │ │ │ ├── DecoderStripContainer (RectTransform) │ │ │ └── ControlPanel │ │ │ ├── FrequencyDisplay (TMP) │ │ │ ├── FrequencySlider (Slider) │ │ │ ├── FilterButton (Button) │ │ │ ├── VerifyButton (Button) │ │ │ ├── SignalBar (RectTransform) │ │ │ └── LogText (TMP) │ │ └── MemoryDecryptorMode (脚本) │ │ ├── MemoryDecryptorRenderer (脚本) │ │ └── MemoryDecryptorInputHandler (脚本) │ ├── Language Analysis Camera (Virtual Camera) │ └── Language Analysis Deep Camera (Virtual Camera) ``` ### 2. 配置 LanguageAnalysisManager ``` LanguageAnalysisManager (脚本) └── Analysis View: 拖入 "Language Analysis View" GameObject ``` ### 3. 配置相机枚举 已自动添加到 `CameraEnum`: - `LanguageAnalysis` - 主相机 - `LanguageAnalysisDeep` - 深度相机 ### 4. 创建配置文件(可选) **✨ 推荐:无需创建** 系统会自动使用默认配置,包含完整的示例数据和目标。 **自定义配置:** 右键 → Create → AibisDream → Language → Memory Decryptor Config 配置内容参考 `MemoryDecryptorConfigExample.cs` ### 5. 配置子组件 #### MemoryDecryptorMode - Config: 【可选】不设置则自动使用默认配置 #### MemoryDecryptorRenderer - Grid Container - Decoder Strip Container - Frequency Display - Log Text - Signal Bar #### MemoryDecryptorInputHandler - Grid Container - Frequency Slider - Filter Button - Verify Button - Grid Cell Size: 45 - Grid Cell Gap: 2 ## 📋 FixState 状态机集成 ### 新增状态 ```csharp public enum FixState { // ... 其他状态 LanguageAnalysis, // ✅ 新增 } ``` ### LanguageAnalysisState ```csharp public struct LanguageAnalysisState : IState { public IEnumerator Enter() { // 1. 切换到 BodyModule (Head) // 2. 打开语言分析视图 // 3. 切换相机 LanguageAnalysis → LanguageAnalysisDeep // 4. 淡入淡出效果 } public IEnumerator Exit() { // 1. 关闭语言分析视图 // 2. 重置 Plug } } ``` ## 🎮 Yarn 命令使用 ### 状态切换命令 ```yarn // 进入语言分析系统状态 <> // 退出语言分析系统状态 <> ``` ### 记忆解密器命令 ```yarn // 在语言分析状态下使用: // 启动记忆解密器 <> // 开始过滤 <> // 设置频率 <> // 检查匹配 <> // 停止解密器 <> ``` ### 完整测试流程 ```yarn title: Test --- <> <> // 玩家操作... === title: TestSuccess --- 成功! <> <> === ``` ## 📝 测试清单 ### 场景设置 - [ ] LanguageAnalysisManager 已添加到场景 - [ ] Analysis View 已配置 - [ ] 两个 Virtual Camera 已设置 - [ ] 相机已注册到 CameraKit ### 组件配置 - [ ] MemoryDecryptorMode 配置文件已设置 - [ ] MemoryDecryptorRenderer UI 组件已连接 - [ ] MemoryDecryptorInputHandler UI 组件已连接 ### 系统注册 - [ ] LanguageAnalysisManager 已注册到 FixSystemCenter.SystemDic - [ ] FixStateMachine 已获取 ### Yarn 测试 - [ ] `<>` 可以进入系统 - [ ] 相机切换正常 - [ ] UI 显示正常 - [ ] `<>` 可以启动解密器 - [ ] 频率调整正常 - [ ] 解码器条拖动正常 - [ ] 匹配检测正常 - [ ] 成功/失败节点跳转正常 - [ ] `<>` 可以退出系统 ## 🔧 调试技巧 ### 1. 检查系统注册 ```csharp var manager = FixSystemCenter.SystemDic.Get(); Debug.Log($"LanguageAnalysisManager: {manager != null}"); ``` ### 2. 检查状态切换 在 Console 中查看状态切换日志: ``` [FixStateMachine] SwitchState: LanguageAnalysis ``` ### 3. 检查相机注册 ```csharp var cam = CameraKit.Instance.GetCamera(CameraEnum.LanguageAnalysis); Debug.Log($"Camera registered: {cam != null}"); ``` ### 4. 使用测试 Yarn 文件 导入 `TestLanguageAnalysis.yarn` 进行快速测试 ## 📚 与原系统的区别 | 方面 | ExpressionManager | LanguageAnalysisManager | |------|-------------------|-------------------------| | **职责** | 粒子表达系统 | 语言分析系统 | | **状态** | FixState.Expression | FixState.LanguageAnalysis | | **相机** | Expression / ExpressionDeep | LanguageAnalysis / LanguageAnalysisDeep | | **切换** | 内部模式切换 | 独立状态切换 | | **Yarn** | `open_expression`, `start_expression` | `enter_language_analysis`, `memory_decryptor_start` | ## 🎯 优势 1. **职责清晰** - 表达系统和分析系统完全分离 2. **独立测试** - 可以单独进入语言分析状态进行测试 3. **状态管理** - 通过 FixStateMachine 统一管理 4. **易于扩展** - 未来可以添加更多分析模式 5. **符合架构** - 与项目其他系统保持一致的状态机模式 ## 🚧 注意事项 1. **相机设置** - 确保两个 Virtual Camera 的优先级和设置正确 2. **状态切换** - 通过 `enter_language_analysis` 进入,不要直接调用 `OpenView` 3. **退出流程** - 使用 `exit_language_analysis` 确保正确清理 4. **测试模式** - 建议先使用 `TestLanguageAnalysis.yarn` 验证基础功能 ## 📞 快速排查 ### 问题:进入状态后看不到界面 - 检查 Analysis View 是否被激活 - 检查 Canvas 设置是否正确 - 检查相机切换是否成功 ### 问题:Yarn 命令不工作 - 检查 LanguageAnalysisManager 是否注册到 SystemDic - 检查 FixStateMachine 是否存在 - 查看 Console 错误日志 ### 问题:相机不切换 - 检查 CameraEnum 是否添加了新枚举 - 检查 Virtual Camera 是否正确注册 - 检查 CameraKit.Instance 是否存在 --- **设置完成后,使用 `<>` 命令即可测试整个系统!**