跳轉到內容

使用 XNA/音訊聲音/XACT 建立遊戲

來自華夏公益教科書,開放世界的開放書籍

XACT (跨平臺音訊建立工具) 是微軟的音訊建立和創作工具。它帶有一個圖形介面,允許聲音設計師為遊戲建立音訊資源,這些資源可以整合到 XNA 專案中,為遊戲開發者提供了一種方便的方式來訪問這些聲音。它是微軟 DirectX SDK 和 XNA Game Studio 的一部分。

XNA 中的聲音

[編輯 | 編輯原始碼]

要簡單地在 XNA 中播放單個音訊檔案,您不需要使用重量級的 XACT 框架。只需將檔案匯入到您的專案的 Content 資料夾中,並使用 Microsoft.Xna.Framework.Media 即可。

Song mySongsName;
mySong = Content.Load<Song>("theSongsAssetName");
MediaPlayer.Play(mySongsName);

XACT 是微軟為所有平臺建立音訊建立工具的方法。它可以用來開發針對 Windows (XP, Vista 和 7) 和 Xbox 的軟體。在技術上,XACT 建立在其他框架之上,這些框架是特定於單個平臺的。XACT 在微軟的移動作業系統(如 Zune 和 Windows Phone 7)上尚不可用。XACT 的基本架構如下所示

XACT 支援播放“普通”單聲道和立體聲音訊,以及複雜的 3D 音訊。

XACT 本身由三個部分組成。一個圖形使用者介面,供聲音設計師使用。一個 API 用於將音訊整合到您的程式碼中,以及一個命令列工具,用於在構建過程中呼叫其某些功能。

XACT 圖形使用者介面

[編輯 | 編輯原始碼]

XACT 的圖形使用者介面被稱為創作工具,是 XNA Game Studio 和 DirectX 軟體開發工具包的一部分。它允許您將聲音組織成邏輯單元,以便之後可以使用 API 透過名稱輕鬆訪問它們。微軟的目標是使組織聲音的過程儘可能簡單。設計師可以在不編寫任何程式碼的情況下編輯聲音。

安裝後,它可以在所有程式 > Microsoft DirectX SDK > DirectX 工具 > Microsoft 跨平臺音訊建立工具 (XACT) 中找到。

XACT 的主要概念基於波形庫、聲音庫和提示。波形庫是實際音訊檔案的集合。聲音庫只包含命令或元資料,這些命令或元資料指定提示點和相關內容。這些提示點在此上下文中稱為事件。支援的事件有播放、停止、標記、設定音量和設定音調。

XACT 還支援類別。類別用於對聲音進行分組,以指定這些聲音的特定特徵集。每個類別可能有多個子類別。

波形庫支援兩種不同的模式:“記憶體中”和“流”。顧名思義,“記憶體中”模式將完整的音訊資料載入到記憶體中。這使您能夠非常快地訪問提示,但這對於長音訊檔案當然不實用。

XACT 僅支援未壓縮的 .wav 或 .aiff 格式的檔案(以及更新版本中的 WMA)。在波形庫中,您還可以指定音訊資料是否應儲存為壓縮格式(作為 xWMA)或 PCM 格式。

XACT 還提供效果。它使用數字聲音處理器,在 MSDN 上有描述。它支援各種常見的效果,如混響和延遲。

XACT 的另一個功能是變數。變數基本上是一些常見音訊選項的設定,如音量,但也包括更高階的設定,如距離和方位角。然後,這些值可以在程式碼中播放聲音時進行修改,如後面所述。

創作工具將資料儲存為 .xap 格式,可以將該格式作為資產匯入您的 XNA 專案中。該檔案本身不包含音訊資料,它只包含引用,這些引用應該保持在適當位置。

XACT Authoring Tool Screenshot

API 提供了要在遊戲程式碼中使用的介面。當 .xap 專案位於您的 Content 資料夾中時,內容管道會確保所有必需的檔案在您的程式碼中可訪問。儘管如此,仍然有一些物件必須在您的 Game 類中的 Initialize() 方法中例項化。

這些物件是 AudioEngine、WaveBank 和 SoundBank 型別。一個基本版本可以在 MSDN 上找到,如下所示

engine = new AudioEngine("Content\\PlaySound.xgs");
soundBank = new SoundBank(engine, "Content\\Sound Bank.xsb");
waveBank = new WaveBank(engine, "Content\\Wave Bank.xwb");

然後,可以將例項化的 AudioEngine 物件在 Update() 方法中更新。它有自己的 Update() 方法,應該在其中呼叫。

要修改 3D 聲音,您可以使用預定義變數或透過創作工具指定的自定義變數。這項任務可以使用 AudioEmitter 和 AudioListener 型別的物件來完成。

XACT 命令列工具

[編輯 | 編輯原始碼]

命令列工具可以用於在整個遊戲的構建過程中構建一些 XACT 包。它被稱為 XACT 聆聽工具。它可以在應用程式主資料夾的“Tools”子資料夾中找到。

它也可以用於測試創作工具建立的 .xap 和其他檔案。

參考資料

[編輯 | 編輯原始碼]

Microsoft XNA Game Studio 3.0 Unleashed, 2009 作者:Chad Carter (ISBN-13: 9780672330223)

  • Christoph Guttandin
  • Ronny Gerasch
華夏公益教科書