Files
aibis-dream/Assets/Scripts/MiniGame/HuoShan/Language/LanguageAnalysis/SETUP_GUIDE.md
T
2025-12-04 20:38:02 +08:00

7.1 KiB
Raw Blame History

语言分析系统 - 设置指南

🎯 概述

语言分析系统是一个独立的游戏系统,通过 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

🎯 优势

  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 是否存在

设置完成后,使用 <<enter_language_analysis>> 命令即可测试整个系统!