提醒,如果想要玩XACT3.0,請下載最新版的DirectX SDK March 2008

嗯,剛剛下午看到XACT3.0的介紹

又看到有人為XNA寫了一個LIB來支援XACT3.0

所以剛剛將所有的環境都準備好以後呢

就來玩看看了

如果沒有玩太仔細XACT的話,可能會沒有發現"轉換格式(compression preset)"在2.0只有PCM ADPCM這兩個轉換格式(這個格式就是導致為什麼在2.0編譯出來的XWB這麼大)

2.0以前編譯出來的檔案格式XSB,如果你不去做其他設定,他就是將WAV直接編譯

結果,導致音樂如果很多的話,檔案就很大(WAV檔案,大家都知道超胖的= =)

雖然知道有些XNA的維護人士,有發現這個現象,推出了輔助專案,像是可以支援MP3、OGG等

現在XNA的小組,也注意到這一點了,所以在XACT3.0的時候,新增了轉換格式WMA,如圖

可以看到新增了WMA這個轉換格式,前提呢,你的聲音檔還是必須是要WAV或是AIF

質量的部分,可以依據喜好選擇(質量越高,檔案越大,質量越小,檔案較小)

接下來,這邊有個比較重要的事情,這個XAP專案,XNA是不認識這個版本的,所以我們只好用XACT3.0內建的Bulid來建立XNA所需要XSG XSB XWB這些檔案

在File->Bulid,瀏覽去找到儲存好的XAP檔案,在選擇Finish就會進行編譯了

就會在Win、Xbox,看到相對應的XSG XSB XWB檔案。

接下來,專案部分新增一個XNA的專案,在Content裡面,將剛剛XACT產生出來的XSG XSB XWB檔案加入

這邊是不需要加入XAP檔案的,因為XNA不認得這個版本,如果你加上去的話,會發生編譯錯誤

接下來,點選XSG的檔案,下面屬性(properties)的地方,Bulid Action這個欄位選擇None

再把XSG,XSB,XWB檔案,複製到Debug->Content,目錄底下,免得等等編譯後他說找不到檔案

接下來程式部分

首先要先引入Bnoerj.Audio的命名空間(請先在REFERENCES,增加Bnoerj.Audio.dll的檔案(這個檔案可以在前一篇的網址下載)

接下來其他部分就跟原始的操作方式一樣,增加AudioEngine、WaveBank、SoundBank等等

AudioEngine engine;
SoundBank sound;
WaveBank wave;
Cue cue;
...
protected override void LoadContent()
{
     spriteBatch = new SpriteBatch(GraphicsDevice);
     engine = new AudioEngine("Content/test1.xgs");
      wave = new WaveBank(engine, "Content/Wave Bank.xwb");
      sound = new SoundBank(engine, "Content/Sound Bank.xsb");
       cue = sound.GetCue("sv6");
       cue.Play();
}

做完以後就可以編譯了XD

看看結果吧,可以發現到唷XWB真的降低很大的空間

看到這個結果真高興,因為我們的遊戲背景音樂,Mp3才24MB總共

轉出來以後WAV到了400MB= =

雖然,3.0可以用wma,可能沒有比MP3好,不過在DirectX上面都有轉成WMA這個格式

所以估計在XNA3.0的XACT中,應該會有這個選項,所以蠻期待的
創作者介紹
創作者 teexit1224 的頭像
teexit1224

StreamWhite

teexit1224 發表在 痞客邦 留言(0) 人氣()