iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
Vibe Coding

從課堂半成品到完整發布:獨立遊戲的30天重生記系列 第 3

【DAY3】Unity 2D 像素風遊戲開發:AudioManager 聲音系統底層建置

  • 分享至 

  • xImage
  •  

一、 前言與重構目標
在遊戲開發前期,我們習慣在各個場景直接掛載 AudioSource 播放背景音樂(BGM)與音效(SFX)。然而,這種做法會在遊戲規模擴大時遇到瓶頸:

  • 切換場景斷音:場景切換時舊物件被銷毀,背景音樂會強制中斷。
  • 無法統一控音:玩家無法透過 Settings 畫面的 UI 滑桿(Slider)一次性調整遊戲總音量。
    為了解決這個問題,今日目標是利用 AI 協助設計一個全域中央音響大腦——AudioManager,具備跨場景不銷毀(DontDestroyOnLoad)與主音量(Master Volume)動態計算機制。

二、 運用 Prompt 引導 AI(Gemini) 產出架構
我們透過精準的需求描述,讓 AI 寫出符合規範且易於擴充的 C# 腳本:

提示詞 (Prompt): 「請幫我在 Unity 中寫一個全域的 AudioManager 腳本(C#)。 需求如下:

  • 採用 Singleton(單例模式),並使用 DontDestroyOnLoad 確保切換場景時不被銷毀。
  • 分離 BGM 與 SFX 兩個 AudioSource。
  • 新增 MasterVolume(主音量) 功能,實際播出的音量需由 MasterVolume * BGMVolume(或 SFXVolume)動態計算。
  • 提供 SetMasterVolume(float)、SetBGMVolume(float)、SetSFXVolume(float) 等公用 API,方便後續與 UI 滑桿(Slider)連動。」
  1. 首先在 Project 面板的 Script 資料夾右鍵新增 AudioManager.cs 腳本:
    https://ithelp.ithome.com.tw/upload/images/20260910/201840735EkA7ocY6L.png
    圖一、在 Project 面板右鍵 Create > MonoBehaviour Script

  2. 接著開啟 VS Code,將 AI 生成的單例架構與音量控制 API 寫入腳本中:
    https://ithelp.ithome.com.tw/upload/images/20260910/201840739e5Q1uwEIe.png
    圖二、VS Code 中編輯 AudioManager.cs 的 Singleton 架構

三、 Unity 實作與元件綁定
腳本撰寫完成後,回到 Unity 進行場景物件的建立與掛載:

  1. 建立全域物件:在主選單場景(SampleScene)的 Hierarchy 面板空白處按右鍵,選擇 GameObject > Create Empty,將其命名為 AudioManager。
    https://ithelp.ithome.com.tw/upload/images/20260910/20184073sXJSkGvklZ.png
    圖三、在 Hierarchy 面板右鍵建立 Create Empty 空物件

  2. 掛載腳本:點擊新建的 AudioManager 物件,將底下的 AudioManager.cs 腳本拖曳至右側 Inspector 面板完成掛載。
    https://ithelp.ithome.com.tw/upload/images/20260910/20184073fvGlATYWmI.png
    圖四、完成 AudioManager 空物件建立與 Inspector 掛載預備

💡Tips:切勿在 Play Mode(播放模式)下進行常態設定

  • 問題現象: 在 Unity 按下 Play 鈕播放測試時,若在 Inspector 調整了 AudioManager 的參數或拖曳綁定元件,一旦停止播放(Exit Play Mode),所有變更都會瞬間消失!
  • 正確作法: 務必確認上方 Play 鍵未處於藍色啟用狀態時,再進行 Inspector 元件拖曳、數值設定與場景配置,這樣改動才會真正儲存到場景檔(.unity)中並被 Git 版控紀錄。

四、 本日成果與 Git 紀錄
透過將音效發聲權限收歸中央,我們不僅保留了每幕自訂音樂/音效檔案的靈活性,更建立了具備全域控制能力的音效系統。
Bash:

  1. git add Assets/Scripts/AudioManager.cs
  2. git commit -m "refactor: 新增全域 AudioManager 單例系統與主音量控制 API"

上一篇
【DAY2】Unity 2D 像素風遊戲開發:專案架構規劃與 Assets 檔案整理歸位
系列文
從課堂半成品到完整發布:獨立遊戲的30天重生記3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言