7.1 KiB
7.1 KiB
语言分析系统 - 设置指南
🎯 概述
语言分析系统是一个独立的游戏系统,通过 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 状态机集成
新增状态
public enum FixState
{
// ... 其他状态
LanguageAnalysis, // ✅ 新增
}
LanguageAnalysisState
public struct LanguageAnalysisState : IState<FixState>
{
public IEnumerator Enter()
{
// 1. 切换到 BodyModule (Head)
// 2. 打开语言分析视图
// 3. 切换相机 LanguageAnalysis → LanguageAnalysisDeep
// 4. 淡入淡出效果
}
public IEnumerator Exit()
{
// 1. 关闭语言分析视图
// 2. 重置 Plug
}
}
🎮 Yarn 命令使用
状态切换命令
// 进入语言分析系统状态
<<enter_language_analysis>>
// 退出语言分析系统状态
<<exit_language_analysis>>
记忆解密器命令
// 在语言分析状态下使用:
// 启动记忆解密器
<<memory_decryptor_start SuccessNode>>
// 开始过滤
<<memory_decryptor_filter_start>>
// 设置频率
<<memory_decryptor_set_frequency 90>>
// 检查匹配
<<memory_decryptor_check>>
// 停止解密器
<<memory_decryptor_stop>>
完整测试流程
title: Test
---
<<enter_language_analysis>>
<<memory_decryptor_start TestSuccess>>
// 玩家操作...
===
title: TestSuccess
---
成功!
<<memory_decryptor_stop>>
<<exit_language_analysis>>
===
📝 测试清单
场景设置
- LanguageAnalysisManager 已添加到场景
- Analysis View 已配置
- 两个 Virtual Camera 已设置
- 相机已注册到 CameraKit
组件配置
- MemoryDecryptorMode 配置文件已设置
- MemoryDecryptorRenderer UI 组件已连接
- MemoryDecryptorInputHandler UI 组件已连接
系统注册
- LanguageAnalysisManager 已注册到 FixSystemCenter.SystemDic
- FixStateMachine 已获取
Yarn 测试
<<enter_language_analysis>>可以进入系统- 相机切换正常
- UI 显示正常
<<memory_decryptor_start>>可以启动解密器- 频率调整正常
- 解码器条拖动正常
- 匹配检测正常
- 成功/失败节点跳转正常
<<exit_language_analysis>>可以退出系统
🔧 调试技巧
1. 检查系统注册
var manager = FixSystemCenter.SystemDic.Get<LanguageAnalysisManager>();
Debug.Log($"LanguageAnalysisManager: {manager != null}");
2. 检查状态切换
在 Console 中查看状态切换日志:
[FixStateMachine] SwitchState: LanguageAnalysis
3. 检查相机注册
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 |
🎯 优势
- 职责清晰 - 表达系统和分析系统完全分离
- 独立测试 - 可以单独进入语言分析状态进行测试
- 状态管理 - 通过 FixStateMachine 统一管理
- 易于扩展 - 未来可以添加更多分析模式
- 符合架构 - 与项目其他系统保持一致的状态机模式
🚧 注意事项
- 相机设置 - 确保两个 Virtual Camera 的优先级和设置正确
- 状态切换 - 通过
enter_language_analysis进入,不要直接调用OpenView - 退出流程 - 使用
exit_language_analysis确保正确清理 - 测试模式 - 建议先使用
TestLanguageAnalysis.yarn验证基础功能
📞 快速排查
问题:进入状态后看不到界面
- 检查 Analysis View 是否被激活
- 检查 Canvas 设置是否正确
- 检查相机切换是否成功
问题:Yarn 命令不工作
- 检查 LanguageAnalysisManager 是否注册到 SystemDic
- 检查 FixStateMachine 是否存在
- 查看 Console 错误日志
问题:相机不切换
- 检查 CameraEnum 是否添加了新枚举
- 检查 Virtual Camera 是否正确注册
- 检查 CameraKit.Instance 是否存在
设置完成后,使用 <<enter_language_analysis>> 命令即可测试整个系统!