通过XACT添加声音
概览
本章将更深入的讨论XACT。XACT是微软跨平台音频创作工具(Microsoft’s Cross-Platform Audio Creation Tool)的简称,它可以让您为Windows和Xbox 360平台创建音频项目。事实上,它也是在XNA中播放声音的唯一方法。这对Windows平台并不那么重要,因为你可以插入您想要的任何其他声音引擎(如DirectSound,OpenAL,FMod等等)。但在Xbox 360上并不容易,因为你只能使用XNA框架,它不能使用任何其他框架播放声音。您只能使用XACT的原因是在XNA中不能使用任何非托管代码,出于同样的原因您也不能使用任何其他的图形或输入引擎,只能用XNA提供的。.
但是,XACT不是一件坏事,它能确保在Windows和Xbox 360平台使用相同的声音内容文件和播放代码。例如,Xbox 360仅支持XMA压缩,而PC使用其他压缩格式,如MP3, Ogg,ADPCM和其他自定义的压缩格式,但XACT只支持ADPCM。IP语音应用通常使用专有的声音压缩格式,因为人类的声音比音乐更容易被压缩,例如,音效文件非常短小,但作为一个游戏开发者通常想要尽可能高品质的声音效果,因此,音效文件往往是未压缩的或使用无损压缩。而对于音乐来说,它占用了大量的空间。如果您的游戏是在DVD上或者您有足够的硬盘空间可以浪费,你可以存储未压缩的wav文件。对于XNA游戏来说这并不好,因为你不能访问DVD,浪费几百MB的空间在音乐上并不是一个好主意。
在过去的DirectX或托管DirectX应用程序中,你最有可能使用DirectSound播放声音或使用其他如OpenAL、Fmod之类的框架。即使使用这些框架,您仍然需要做大量的自定义代码,你必须判断哪些声音格式是最适合你的,你将自己处理声音的压缩。此外,您必须自己实现播放音乐的方式。例如,DirectSound对音乐来说不是很有用,它只是支持wav文件,如果你想播放MP3或OGG音乐文件,您必须使用如DirectShow、Windows MCI、ActiveX播放代码之类的其他框架。听起来要做大量的工作,但大部分游戏中播放声音的实际代码是非常简单的。如果您要使用复杂的3D音效计算或支持环绕立体声会复杂点,但它仍比开发3D引擎容易。