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