State 與 Switch 差異與應用
約 495 字大約 2 分鐘
2025-10-03
🧭 分清「局部選擇」與「全域模式」
Switch 解決『這個物件現在是哪一種?』;State 解決『整個世界(或系統)現在處於什麼模式?』。誤用會導致結構難維護或過度複製。
🎯 本節你會收穫
- 🔍 掌握 Switch vs State 核心差異(作用範圍 / 語意層級)
- 🎵 建立 GamePhase 音樂狀態切換(探索 ↔ 戰鬥)概念流程
- ❤️ 全域混音狀態(LowHealth)設計:濾波 + Layer 控制
- 🧩 避免濫用 State / Switch 的判斷準則
- 🤝 與程式端溝通時需確認的條件與節流策略
一、概念對照
| 項目 | Switch | State |
|---|---|---|
| 範圍 | 物件/局部 | 全域(Global) |
| 用途 | 材質 / 武器等局部差異 | 遊戲模式 / 情緒層級 |
| 優先感 | 單一播放點影響 | 影響整體混音或素材邏輯 |
| 例子 | SurfaceType、WeaponType | GamePhase、CombatState |
二、典型 State 案例
| 名稱 | 值 | 音樂行為 |
|---|---|---|
| GamePhase | Explore / Combat | 轉場 Crossfade 至戰鬥 Loop |
| PlayerCondition | Normal / LowHealth | 全域加心跳 Layer + EQ |
三、音樂 State 操作(概念流程)
- 設定 State Group:
GamePhase - 建 Explore / Combat 兩狀態
- 音樂層:Combat 狀態下啟用額外鼓層 / 加節奏
- 測試:State 切換時 Crossfade 時間 1.5s
四、低血量混音 State
- State Group:
PlayerCondition - LowHealth 狀態 → Master 或 SFX Bus 上加低通 + 心跳 Layer 淡入
- 回到 Normal 後淡出 0.8s
五、與程式端溝通需求
| 項目 | 問題要問清楚 |
|---|---|
| 切換頻率 | 是否會頻繁抖動?需節流? |
| 進出條件 | 有無明確門檻 / 緩衝區 |
| 過渡時間 | 是否需要平滑 / 漸進 |
| 互斥關係 | 是否會同時存在多狀態 |
🚀 下節預告:語音與本地化
下一節進入 VO 與多語系流程:資料夾命名、字幕對齊、Fallback 策略與 SoundBank 生成注意事項。
🎊 恭喜!你已清楚區分 State 與 Switch 的責任邊界,架構未來會更乾淨!