当使用XNA / XACT结束另一个声音时,如何立即播放声音?

时间:2008-09-22 09:30:06

标签: c# audio xna xact

这个问题与音频设计师和程序员的世界接壤。虽然这个问题可能必须由音频设计师的某个领域部分回答,但对于程序员来说肯定是个问题。在我们的项目中,我们想要在游戏计时器超过一分钟时循环播放声音(背景音乐)。当这个时间被击中时,我们希望停止播放音乐,,然后立即继续结束片段。我一直在研究XACT,它似乎支持不同的事件。遗憾的是文档缺乏,作为程序员,应用程序对我来说有些陌生。

我希望做的是这些方面(不同的方法):

  1. 当音乐停止时,我想要打领带 发挥另一种声音的事件
  2. 当标记是 在音乐中触发,我想 立即播放另一种声音
  3. 我还希望在我的应用程序中知道其中一些事件发生时
  4. 问题在于,当另一个声音开始时我无法找到任何自动播放声音的机制,而且我找不到将XACT项目中发生的事件与C#联系起来的方法。 / p>

    如果无法做到这一点(即XACT / XNA缺乏对这些操作的支持),请收集有关如何以最小的交叉声音时间错误解决此问题的想法。我最好能够通过调用XNA在C#中尽可能多地控制它。

1 个答案:

答案 0 :(得分:4)

我想我现在已经解决了

我是这样做的。

  1. 选择要在 XACT 中停止后更改声音的 Cue
  2. 播放列表类型设置为互动
  3. 打开Cue 转换
  4. 选择按目的地查看
  5. 在树状视图中显示的(停止)节点中选择 Cue
  6. 在树状视图右侧的过渡属性中,来源和目的地
    1. 来源设置为循环结束
    2. Destiantion 设置为开头
  7. 在树状视图右侧的过渡属性中,过渡
    1. 转换类型设置为直接并发转换
    2. 在循环声音完成循环后,将过渡声音设置为您要播放的声音
  8. 关闭窗口并通过播放Cue进行测试。还要测试是否阻止它 As Authored ,看看行为是否符合您的期望。


    实施

    在代码中,停止 Cue As Authored 以获取此行为。 立即会在不播放声音的情况下停止提示。我希望这可以帮助将来可能遇到这个问题的其他人。问题和答案并不是我最初想的那么多代码导向。此外,这适用于XNA 2.0。我不知道在XNA 3.0 +中是否还有其他控制此类行为的选项。