当另一个声音使用 XNA/XACT 结束时,如何立即播放一个声音?
Posted
技术标签:
【中文标题】当另一个声音使用 XNA/XACT 结束时,如何立即播放一个声音?【英文标题】:How can I immediately play a sound when another sound ends using XNA/XACT? 【发布时间】:2008-09-22 09:30:06 【问题描述】:这个问题介于音频设计师和程序员的世界之间。虽然这个问题可能必须由音频设计师的那个领域来部分回答,但这对于程序员来说肯定是一个问题。在我们的项目中,我们希望在游戏计时器还剩一分钟以上时循环播放声音(背景音乐)。当这个时间到来时,我们希望停止创作的音乐,然后立即继续结束片段。我一直在研究 XACT,它似乎支持不同的事件。不幸的是,缺少文档,而且这个应用程序对我这个程序员来说有点陌生。
我想做的是沿着这些路线(不同的方法):
-
当音乐停止,我想打领带
播放另一种声音的事件
立即
当标记是
在音乐中触发,我想
立即播放另一个声音
我还想在我的应用程序中知道其中一些事件何时发生
问题是我找不到任何机制来在另一个声音开始时自动播放声音,而且我找不到将 XACT 项目中的事件与 C# 挂钩的方法。
如果无法做到这一点(即 XACT/XNA 不支持这些操作),请收集您的想法,了解如何以最小的交叉声音时间错误解决此问题。最好我可以通过调用 XNA 在 C# 中尽可能地控制这一点。
【问题讨论】:
【参考方案1】:我想我现在已经解决了
我是这样做的。
-
在XACT中选择您想要改变声音的Cue。
将播放列表类型设置为交互式。
打开提示过渡。
选择按目的地查看。
在树视图中可见的 (stop) 节点中选择 Cue。
在树视图右侧的 Transition Properties 中,对于 Source 和 Destination:
-
将来源设置为循环结束。
将Destiantion设置为Beginning。
-
将转换类型设置为直接并发转换。
在循环声音完成循环后,将Transitional Sound设置为您希望播放的声音。
关闭窗口并通过播放 Cue 进行测试。还要测试以阻止它按作者身份,看看该行为是否符合您的期望。
实施
在代码中,停止提示 As Authored 以获取此行为。 立即停止提示而不播放声音结尾。我希望这对将来可能遇到此问题的其他人有所帮助。问题和答案并不像我最初想象的那样面向代码。此外,这适用于 XNA 2.0。我不知道在 XNA 3.0+ 中是否还有其他选项可以控制这种行为。
【讨论】:
优秀的答案!我喜欢这种布局。 +1以上是关于当另一个声音使用 XNA/XACT 结束时,如何立即播放一个声音?的主要内容,如果未能解决你的问题,请参考以下文章