7.6 KiB
7.6 KiB
使用粒子系统的简化设置指南
✨ 优势
直接使用 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(暂时注释)
第三步:完成!
保存场景,运行测试即可。
🎮 测试流程
- 启动游戏
- 通过 Yarn 启动分析模式:
<<start_analysis_mode "" "TestComplete">> - 点击 Initialize Button
- 网格粒子会自动在 Language Canvas 上生成
- Matrix 风格的填充动画
- 20×20 = 400 个 TextParticle
- 点击 Start Filter Button
- 情绪滑动条变为可用
- 拖动 Emotion Slider
- 观察粒子颜色和透明度变化
- Fear (90Hz): 紫色高亮
- Anger (65Hz): 红色高亮
- Sadness (40Hz): 蓝色高亮
- Joy (15Hz): 黄色高亮
📐 配置说明
字体大小参考(与 LanguageParticleManager 一致)
// 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:
// 居中(默认)
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),视觉上非常协调。
🔧 代码自动处理
现在代码会自动:
- ✅ 创建 TextParticle 对象(而不是 UI Image)
- ✅ 设置粒子为静态模式(不移动)
- ✅ 使用与 LanguageParticleManager 相同的字体
- ✅ 设置字体大小为 2.5(与非目标粒子一致)
- ✅ 在世界空间中排列成网格
- ✅ 根据情绪频率更新粒子颜色和透明度
📋 最小化设置清单
只需要创建:
- 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(已注释)
🎯 实际效果
运行后,你会看到:
- 400 个 TextParticle 自动排列成 20×20 网格
- 每个粒子显示 2 个字符(焦虑短句片段)
- 粒子大小和样式与语言粒子系统完全一致
- 拖动情绪滑动条时,粒子会根据情绪类型变色和闪烁
- 整体视觉非常协调统一
🎨 自定义建议
调整网格密度
// 更密集
cellSize = 0.35f;
cellGap = 0.03f;
// 更稀疏
cellSize = 0.5f;
cellGap = 0.1f;
调整文字大小
cellFontSize = 2.5f; // 默认(与非目标粒子一致)
cellFontSize = 3.0f; // 更大(接近目标粒子)
cellFontSize = 2.0f; // 更小(接近背景文字)
调整网格位置
// 在 Inspector 中设置 Grid Center Offset
(0, 0, 0) // 居中
(3, 0, 0) // 向右偏移
(-3, 0, 0) // 向左偏移
(0, 2, 0) // 向上偏移
⚠️ 注意事项
- 字体资源:必须设置
Chinese Font Asset,使用与 LanguageParticleManager 相同的字体 - Canvas 引用:必须设置
Shared Canvas,指向 Language Canvas - 粒子静态:网格粒子设置为
isStatic = true,不会移动 - 层级管理:网格粒子会添加到 Language Canvas 下,与其他粒子共存
🔍 验证方法
运行后在 Hierarchy 中检查:
Language Canvas
├── FloatingParticle_0
├── FloatingParticle_1
├── ...
├── CandidateParticle_0
├── CandidateParticle_1
├── ...
├── GridParticle_0_0 ← 新创建的网格粒子
├── GridParticle_0_1
├── ...
└── GridParticle_19_19 ← 应该有 400 个
🎉 完成
现在设置变得非常简单:
- 创建几个控制按钮
- 配置 AnalysisModeManager 的字段
- 运行游戏
- 网格粒子自动生成,大小完美匹配!
不需要任何 Prefab,不需要复杂的 UI 布局,一切都是代码自动处理!✨