【问题标题】:iOS and Cocos2d - Play sound once in game loopiOS 和 Cocos2d - 在游戏循环中播放一次声音
【发布时间】:2013-09-08 13:44:32
【问题描述】:

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

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

【问题讨论】:

    标签: ios cocos2d-iphone


    【解决方案1】:

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

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

    • 检查这种水果类型是否已经“携带”
    • 如果没有,则播放声音
    • 根据fruitType选择声音

    【讨论】:

    • 好主意!将声音状态转移到另一个对象让我跳过了脑海。想一想,如果这些声音与任何对象无关(仅与某个“状态”有关),我可以创建一个包含 playOnce 方法的类,用音效和 bool 标志对其进行初始化,然后从内部调用它环形。我还可以使用循环外部的重置方法使其再次可播放。
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多