1

这更像是一个一般的“最佳实践”问题,所以我没有真正的例子。我只是想弄清楚人们通常如何处理这个问题。
假设我有一个 mainGameLoop 方法,计划每秒调用 60 次。在这种方法中,我拥有当前场景的所有逻辑。现在,我想在某个状态发生时使用 SimpleAudioEngine 播放声音效果。
问题是,一旦出现这种状态,它会保持一段时间,这意味着我的音效将一遍又一遍地快速播放,直到状态发生变化(毕竟,我们处于游戏循环中)。
我通常的解决方案是使用布尔值只播放一次效果。问题是,我现在面临着大量不同的状态和效果,这意味着相当多的布尔值。

我想知道人们在游戏循环中播放音效时是否有更好的方法。
有什么建议么?

4

1 回答 1

1

你需要一个“状态改变”事件。每当状态变为“开”时,声音就会播放。由于您必须记录此状态更改,因此几乎没有办法提供布尔值来记录每个状态。

当然,您不会分别对每个状态进行编码。假设您有 100 个游戏对象(即水果),每个水果在收集时播放不同的声音,您将有一个带有“fruitType”变量的水果类。捡起水果后,您可以:

  • 检查这种水果类型是否已经“携带”
  • 如果不是,播放声音
  • 根据fruitType选择声音
于 2013-09-08T14:51:39.890 回答