# 使用粒子系统的简化设置指南 ## ✨ 优势 直接使用 LanguageParticleManager 的 TextParticle 系统,无需创建 UI Prefab! ### 好处: - ✅ **无需创建 Prefab** - 代码自动生成粒子 - ✅ **视觉完全一致** - 与语言粒子系统使用相同的渲染 - ✅ **单位自动匹配** - 都是 Unity 世界单位 - ✅ **字体自动匹配** - 使用相同的中文字体资源 - ✅ **性能更好** - 复用现有的粒子系统 ## 🚀 5分钟极简设置 ### 第一步:创建控制面板(3分钟) 在 `Language Canvas` 下创建简单的控制 UI: ``` Language Canvas ├── 粒子系统(LanguageParticleManager 创建的) └── Analysis Control Panel ← 只需要控制按钮! ├── Initialize Button ├── Emotion Slider ├── Frequency Text ├── Signal Strength Text ├── Start Filter Button └── Verify Button ``` **无需创建**: - ❌ Grid Container(粒子直接生成在世界空间) - ❌ Grid Cell Prefab(代码自动创建 TextParticle) - ❌ 复杂的布局结构 ### 第二步:配置 AnalysisModeManager(2分钟) 在 Inspector 中只需设置: ``` Canvas 引用(共享) └─ Shared Canvas: Language Canvas ← 必须设置 UI 引用(简化) ├─ Analysis Panel: Analysis Control Panel ├─ Initialize Button: Initialize Button ├─ Emotion Slider: Emotion Slider ├─ Frequency Text: Frequency Text ├─ Signal Strength Text: Signal Strength Text ├─ Start Filter Button: Start Filter Button └─ Verify Button: Verify Button 网格配置 ├─ Grid Width: 20 ├─ Grid Height: 20 ├─ Cell Size: 0.4 ← Unity 单位 ├─ Cell Gap: 0.05 ← Unity 单位 ├─ Cell Font Size: 2.5 ← 与粒子一致 └─ Grid Center Offset: (0, 0, 0) 或根据需要偏移 字体配置 └─ Chinese Font Asset: [拖入中文字体,与 LanguageParticleManager 相同] 焦虑短句配置 └─ [添加短句列表] 目标配置 └─ Target Sentence: [临检]要来了,不合格[英里]被骂了,这让我很[担心] ``` **不需要设置**: - ❌ Grid Container(可选,用于定位但不必须) - ❌ Grid Cell Prefab(已注释,不需要) - ❌ Decoder Strip(暂时注释) ### 第三步:完成! 保存场景,运行测试即可。 ## 🎮 测试流程 1. **启动游戏** 2. **通过 Yarn 启动分析模式**: ```yarn <> ``` 3. **点击 Initialize Button** - 网格粒子会自动在 Language Canvas 上生成 - Matrix 风格的填充动画 - 20×20 = 400 个 TextParticle 4. **点击 Start Filter Button** - 情绪滑动条变为可用 5. **拖动 Emotion Slider** - 观察粒子颜色和透明度变化 - Fear (90Hz): 紫色高亮 - Anger (65Hz): 红色高亮 - Sadness (40Hz): 蓝色高亮 - Joy (15Hz): 黄色高亮 ## 📐 配置说明 ### 字体大小参考(与 LanguageParticleManager 一致) ```csharp // LanguageParticleManager 配置 floatingTextFontSize = 2.0f; // 背景浮动文字 nonTargetParticleFontSize = 2.5f; // 非目标粒子 targetParticleFontSize = 3.5f; // 目标粒子 // AnalysisModeManager 配置 cellFontSize = 2.5f; // ← 使用与非目标粒子相同的大小 ``` ### 网格大小计算 ``` 单元格单位 = cellSize + cellGap = 0.4 + 0.05 = 0.45 Unity 单位 网格总宽度 = 20 × 0.4 + 19 × 0.05 = 8.95 Unity 单位 网格总高度 = 20 × 0.4 + 19 × 0.05 = 8.95 Unity 单位 Canvas 大小 = 10 × 10 Unity 单位 边界大小 = 9 × 9 Unity 单位 ✅ 网格 (8.95 × 8.95) 完美适配边界 (9 × 9) ``` ### 网格位置调整 如果需要偏移网格位置,调整 `Grid Center Offset`: ```csharp // 居中(默认) gridCenterOffset = Vector3.zero; // 向右偏移 2 单位 gridCenterOffset = new Vector3(2, 0, 0); // 向左偏移 2 单位 gridCenterOffset = new Vector3(-2, 0, 0); // 向上偏移 1 单位 gridCenterOffset = new Vector3(0, 1, 0); ``` ## 🎨 视觉效果 ### 网格粒子的显示状态 | 频率距离 | 显示效果 | 文字内容 | 颜色 | 光晕 | |---------|---------|---------|------|------| | < 5 Hz | 锁定高亮 | 真实词 | 情绪色(加粗) | 0.5 alpha | | 5-20 Hz | 闪烁 | 真实词⇄掩盖词 | 情绪色⇄白色 | 0.3 alpha | | 20-35 Hz | 淡出 | 掩盖词 | 白色(渐变) | 无 | | > 35 Hz | 消失 | 掩盖词 | 白色(0.05 alpha) | 无 | | 中性/噪音 | 背景 | 笑话片段 | 灰绿色(0.3 alpha) | 无 | ### 与粒子系统的视觉对比 | 元素 | 字体大小 | 颜色 | 效果 | |------|---------|------|------| | 浮动粒子 | 2.0 | 浅蓝色 | 自由移动 | | 非目标粒子 | 2.5 | 蓝色 | 焦虑文字 | | 目标粒子 | 3.5 | 红色 | 目标文字 | | **网格粒子** | **2.5** | **白色/情绪色** | **静态网格** | 网格粒子使用与非目标粒子相同的大小(2.5),视觉上非常协调。 ## 🔧 代码自动处理 现在代码会自动: 1. ✅ 创建 TextParticle 对象(而不是 UI Image) 2. ✅ 设置粒子为静态模式(不移动) 3. ✅ 使用与 LanguageParticleManager 相同的字体 4. ✅ 设置字体大小为 2.5(与非目标粒子一致) 5. ✅ 在世界空间中排列成网格 6. ✅ 根据情绪频率更新粒子颜色和透明度 ## 📋 最小化设置清单 只需要创建: - [ ] Analysis Control Panel(控制按钮面板) - [ ] Initialize Button - [ ] Emotion Slider - [ ] Frequency Text - [ ] Signal Strength Text - [ ] Start Filter Button - [ ] Verify Button 不需要创建: - ❌ Grid Container(可选) - ❌ Grid Cell Prefab(代码自动生成) - ❌ 复杂的布局 Group - ❌ Decoder Strip(暂时注释) - ❌ Log Panel(已注释) ## 🎯 实际效果 运行后,你会看到: 1. 400 个 TextParticle 自动排列成 20×20 网格 2. 每个粒子显示 2 个字符(焦虑短句片段) 3. 粒子大小和样式与语言粒子系统完全一致 4. 拖动情绪滑动条时,粒子会根据情绪类型变色和闪烁 5. 整体视觉非常协调统一 ## 🎨 自定义建议 ### 调整网格密度 ```csharp // 更密集 cellSize = 0.35f; cellGap = 0.03f; // 更稀疏 cellSize = 0.5f; cellGap = 0.1f; ``` ### 调整文字大小 ```csharp cellFontSize = 2.5f; // 默认(与非目标粒子一致) cellFontSize = 3.0f; // 更大(接近目标粒子) cellFontSize = 2.0f; // 更小(接近背景文字) ``` ### 调整网格位置 ```csharp // 在 Inspector 中设置 Grid Center Offset (0, 0, 0) // 居中 (3, 0, 0) // 向右偏移 (-3, 0, 0) // 向左偏移 (0, 2, 0) // 向上偏移 ``` ## ⚠️ 注意事项 1. **字体资源**:必须设置 `Chinese Font Asset`,使用与 LanguageParticleManager 相同的字体 2. **Canvas 引用**:必须设置 `Shared Canvas`,指向 Language Canvas 3. **粒子静态**:网格粒子设置为 `isStatic = true`,不会移动 4. **层级管理**:网格粒子会添加到 Language Canvas 下,与其他粒子共存 ## 🔍 验证方法 运行后在 Hierarchy 中检查: ``` Language Canvas ├── FloatingParticle_0 ├── FloatingParticle_1 ├── ... ├── CandidateParticle_0 ├── CandidateParticle_1 ├── ... ├── GridParticle_0_0 ← 新创建的网格粒子 ├── GridParticle_0_1 ├── ... └── GridParticle_19_19 ← 应该有 400 个 ``` ## 🎉 完成 现在设置变得非常简单: 1. 创建几个控制按钮 2. 配置 AnalysisModeManager 的字段 3. 运行游戏 4. 网格粒子自动生成,大小完美匹配! 不需要任何 Prefab,不需要复杂的 UI 布局,一切都是代码自动处理!✨