Files
aibis-dream/Assets/Scripts/MiniGame/HuoShan/Language/AnalysisMode/SimpleSetup_UsingParticles.md
T
2025-12-09 21:42:49 +08:00

7.6 KiB
Raw Blame History

使用粒子系统的简化设置指南

优势

直接使用 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
  • 复杂的布局结构

第二步:配置 AnalysisModeManager2分钟)

在 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 启动分析模式
    <<start_analysis_mode "" "TestComplete">>
    
  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 一致)

// 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),视觉上非常协调。

🔧 代码自动处理

现在代码会自动:

  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. 整体视觉非常协调统一

🎨 自定义建议

调整网格密度

// 更密集
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)    // 向上偏移

⚠️ 注意事项

  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 布局,一切都是代码自动处理!