使用 XNA/音频声音/XACT 创建游戏
XACT (跨平台音频创建工具) 是微软的音频创建和创作工具。它带有一个图形界面,允许声音设计师为游戏创建音频资源,这些资源可以集成到 XNA 项目中,为游戏开发者提供了一种方便的方式来访问这些声音。它是微软 DirectX SDK 和 XNA Game Studio 的一部分。
要简单地在 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 的图形用户界面被称为创作工具,是 XNA Game Studio 和 DirectX 软件开发工具包的一部分。它允许您将声音组织成逻辑单元,以便之后可以使用 API 通过名称轻松访问它们。微软的目标是使组织声音的过程尽可能简单。设计师可以在不编写任何代码的情况下编辑声音。
安装后,它可以在所有程序 > Microsoft DirectX SDK > DirectX 工具 > Microsoft 跨平台音频创建工具 (XACT) 中找到。
XACT 的主要概念基于波形库、声音库和提示。波形库是实际音频文件的集合。声音库只包含命令或元数据,这些命令或元数据指定提示点和相关内容。这些提示点在此上下文中称为事件。支持的事件有播放、停止、标记、设置音量和设置音调。
XACT 还支持类别。类别用于对声音进行分组,以指定这些声音的特定特征集。每个类别可能有多个子类别。
波形库支持两种不同的模式:“内存中”和“流”。顾名思义,“内存中”模式将完整的音频数据加载到内存中。这使您能够非常快地访问提示,但这对于长音频文件当然不实用。
XACT 仅支持未压缩的 .wav 或 .aiff 格式的文件(以及更新版本中的 WMA)。在波形库中,您还可以指定音频数据是否应存储为压缩格式(作为 xWMA)或 PCM 格式。
XACT 还提供效果。它使用数字声音处理器,在 MSDN 上有描述。它支持各种常见的效果,如混响和延迟。
XACT 的另一个功能是变量。变量基本上是一些常见音频选项的设置,如音量,但也包括更高级的设置,如距离和方位角。然后,这些值可以在代码中播放声音时进行修改,如后面所述。
创作工具将数据保存为 .xap 格式,可以将该格式作为资产导入您的 XNA 项目中。该文件本身不包含音频数据,它只包含引用,这些引用应该保持在适当位置。
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 聆听工具。它可以在应用程序主文件夹的“Tools”子文件夹中找到。
它也可以用于测试创作工具创建的 .xap 和其他文件。
Microsoft XNA Game Studio 3.0 Unleashed, 2009 作者:Chad Carter (ISBN-13: 9780672330223)
- http://msdn.microsoft.com/en-us/library/ee415932%28v=VS.85%29.aspx: http://msdn.microsoft.com/en-us/library/ee415932%28v=VS.85%29.aspx
- http://msdn.microsoft.com/de-de/library/ff827590.aspx: http://msdn.microsoft.com/de-de/library/ff827590.aspx
- http://en.wikipedia.org/wiki/Cross-platform_Audio_Creation_Tool: http://en.wikipedia.org/wiki/Cross-platform_Audio_Creation_Tool
- http://www.xnamag.de/article.php?aid=8#chapter2: http://www.xnamag.de/article.php?aid=8#chapter2
- http://www.xnamag.de/article.php?aid=18: http://www.xnamag.de/article.php?aid=18
- Christoph Guttandin
- Ronny Gerasch