这个问题与音频设计师和程序员的世界接壤。虽然这个问题可能必须由音频设计师的某个领域部分回答,但对于程序员来说肯定是个问题。在我们的项目中,我们想要在游戏计时器超过一分钟时循环播放声音(背景音乐)。当这个时间被击中时,我们希望停止播放音乐,然后立即继续结束片段。我一直在研究 XACT,它似乎支持不同的事件。遗憾的是文档缺乏,作为程序员,应用程序对我来说有些陌生。
我希望做的是沿着这些方向(不同的方法):
-
当音乐停止时,我想要将事件联系起来立即播放另一个声音
-
当音乐中触发标记时,我想立即播放另一个声音
-
我还想在我的应用程序中知道其中一些事件发生时
问题是,当另一个声音开始时我无法找到任何 auto-play 声音的机制,而且我找不到将 XACT 项目中发生的事件与 C#联系起来的方法。
如果无法做到这一点(i.e.XACT/XNA 缺乏对这些操作的支持),请收集有关如何以最小的 cross-sound 时间错误解决此问题的想法。我最好能够通过调用 XNA 在 C#中尽可能多地控制它。
1 回答
我想我现在已经解决了
这就是我做到的。
在XACT中停止后,选择要更改声音的Cue。
将播放列表类型设置为交互。
打开提示转换。
选择按目的地查看。
在树视图中可见的**(停止)节点中选择Cue**。
在树视图右侧的Transition Properties中,对于Source 和 Destination:
将Source设置为End of Loop。
将Destiantion设为开始。
在树视图右侧的过渡属性中,对于过渡:
将转换类型设置为直接并发转换。
在循环声音完成循环后,将过渡声设置为您想要播放的声音。
关闭窗口并通过播放 Cue 进行测试。还要测试停止它作为编写,看看行为是否符合你的期望。
履行
在代码中,停止Cue** As Authored **以获得此行为.立即停止提示而不播放声音 outro。我希望这可以帮助将来可能遇到这个问题的其他人。问题和答案并不是我最初想的那么多代码导向。此外,这适用于 XNA 2.0. 我不知道在 XNA 3.0 中是否会有其他选项来控制这种行为。