1

这个问题介于音频设计师和程序员的世界之间。虽然这个问题可能必须由音频设计师的那个领域来部分回答,但这对于程序员来说肯定是一个问题。在我们的项目中,我们希望在游戏计时器还剩一分钟以上时循环播放声音(背景音乐)。当这个时间到达时,我们希望停止创作的音乐,然后立即继续结束片段。我一直在研究 XACT,它似乎支持不同的事件。不幸的是,缺少文档,并且该应用程序对我作为程序员来说有些陌生。

我想做的是沿着这些思路(不同的方法):

  1. 当音乐停止时,我想绑定一个事件立即播放另一个声音
  2. 当音乐中触发标记时,我想立即播放另一个声音
  3. 我还想在我的应用程序中知道其中一些事件何时发生

问题是当另一个声音开始时我找不到任何自动播放声音的机制,而且我找不到将 XACT 项目中的事件连接到 C# 的方法。

如果这无法完成(即 XACT/XNA 不支持这些操作),请收集您的想法,了解如何以最小的交叉声音时间错误解决此问题。最好我可以通过调用 XNA 在 C# 中尽可能地控制它。

4

1 回答 1

4

我想我现在已经解决了

这就是我的做法。

  1. 选择要在XACT中停止后更改声音的Cue
  2. 播放列表类型设置为Interactive
  3. 打开提示转换
  4. 选择按目的地查看
  5. 在树视图中可见的(停止)节点中选择Cue 。
  6. 在树视图右侧的转换属性中,对于Source 和 Destination
    1. Source设置为End of Loop
    2. 目标设置为开始
  7. 在树视图右侧的Transition Properties中,对于Transitions
    1. 转换类型设置为直接并发转换
    2. Transitional Sound设置为您希望在循环声音完成循环后播放的声音。

关闭窗口并通过播放 Cue 进行测试。还要测试以将其按原样停止,以查看该行为是否符合您的期望。


执行

在代码中,Stop the Cue As Authored以获取此行为。立即停止提示而不播放声音结尾。我希望这对将来可能遇到此问题的其他人有所帮助。问题和答案并不像我最初想象的那样面向代码。此外,这适用于 XNA 2.0。我不知道在 XNA 3.0+ 中是否会有其他选项来控制这种行为。

于 2008-09-22T12:08:35.967 回答