ios - SpriteKit 正确处理声音

标签 ios sprite-kit audio

我有一个 SpriteKit 游戏,其中有许多不同的 Sprites Lasers、Planes 等。其中许多 Sprites 都有声音,只要它们可见就会播放。现在我在 SKSpriteNode 本身中播放声音。这可能不是我想要的,因为如果我有 50 个相同的 Sprite ,它们都会播放相同的声音并抢夺资源。但是,我不太确定哪里是播放声音的最佳位置,因为对于其中一些 Sprite ,我需要检查它是否应该播放。我想我可以将声音放在 GameScene 中,并在每次更新期间循环遍历所有 sprite,以确定应该播放和不应该播放的声音,这样每个声音只会有一个实例。我希望将所有 sprite 代码保留在 sprite 本身中,但这将解决同一声音播放的多个实例的问题。这是处理声音的正确方法吗?

最佳答案

如果没有看到您的代码,很难给您一个合适的代码示例。但是,您可以了解您可以尝试使用我下面提供的内容的要点。

在 MyScene 中添加属性 BOOL propSound

每当您创建一个新飞机并想知道如何添加 Prop 声音时,请执行以下操作:

if(propSound == false)
{
    propSound = true;
    // add your code to play prop sound
}

如果像这样 [yourArrayName addObject:newPlane]; 将每个新创建的平面 Sprite 添加到 NSMutableArray 中,您可以在每次移除平面时检查数组计数,以便了解最后一个是否飞机被移走了,声音需要停止。

if([yourArrayName count] == 0)
{
    propSound = false;
    // add your code to stop prop sound
}

关于ios - SpriteKit 正确处理声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279098/

相关文章:

ios - SKSpriteNode 不会居中

ios - 发布申请/x-www-form-urlencoded Alamofire

ios - 当用户尝试使用 PHPickerViewController 在 IOS 14、swift 5 中使用选定的照片权限检索视频时获取视频数据为零

ios - SpriteKit : Preload sound file into memory before playing?

ios - TouchesMoved 无需移动手指即可调用

ios - 我可以将委托(delegate)链接在一起吗?

swift - SKCameraNode.position didSet 在使用 SKAction 移动时不会被触发

c# - 如何从 .wav 声音进入双 [] C#

node.js - NodeJS - 从固定 HTTP 端点流式传输 MP3 音频播放列表

flash - 录制音频有效,播放方式太快