【问题标题】:Regulating the volume of SKAction playSoundFileNamed:调节 SKAction playSoundFileNamed 的音量:
【发布时间】:2013-12-20 16:40:45
【问题描述】:

有没有办法调节通过 SKAction playSoundFileNamed:waitForCompletion: 播放的音量。

我想在我的游戏中实现一个简单的音乐和音效滑块。我可以轻松控制背景音乐,因为我通过 AVAudioPlayer 播放它,但所有音效都是通过 SKAction 播放的。

【问题讨论】:

  • 您也可以在 SKScene 中使用 AVAudioPlayer
  • 我知道,但我使用 SKAction 更方便。由于大部分声音是在通过 SKAction 序列实现的角色动画期间播放的。我知道我可以使用 runBlock 动作并以任何我想要的方式实现播放声音,但如果我有办法在这里播放它,我不想诉诸于此:)

标签: ios objective-c swift sprite-kit


【解决方案1】:

这是我如何处理这个问题的代码

NSError *error;
NSURL *soundURL = [[NSBundle mainBundle] URLForResource:@"pew-pew-lei" withExtension:@"caf"];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
[player setVolume:masterVolume];
[player prepareToPlay];

SKAction*   playAction = [SKAction runBlock:^{
    [player play];
}];
SKAction *waitAction = [SKAction waitForDuration:player.duration+1];
SKAction *sequence = [SKAction sequence:@[playAction, waitAction]];

[self runAction:sequence];

masterVolume 变量只是我拥有的一些预设变量,用户可以在 0.0-1.0 之间更改

waitAction 确保播放器在播放完整个声音之前不会被移除

希望这会有所帮助!

【讨论】:

  • 此代码有效,但最后一行应为:[self runAction: sequence]; (而不是 [self runAction: groupActions];)并且您需要 #import
  • 这行得通!试图从我的 DAW 中导出音效,但由于某种原因无法降低音量!诡异的。这让我可以使用我想要的音效,并且可以降低代码中的音量。
【解决方案2】:

很遗憾,您无法使用 SKAction 修改音量,因此您也必须使用 AVAudioPlayer 来制作效果。 您可以按照您的想法使用 runBlock 实现自定义 playSoundFileNamed:waitForCompletion:volume:,因此您的代码与使用 playSoundFileNamed:waitForCompletion: 不会有太大不同。

【讨论】:

    【解决方案3】:

    斯威夫特:

    iOS 9.0 开始,如果您已经运行了音频,则可以将音量更改为运行另一个操作的节点(请记住,如果您有使用 @ 运行的东西,这显然无法工作987654321@):

    let changeVolumeAction = SKAction.changeVolume(to: 0.3, duration: 0.3)
    node.run(changeVolume)
    

    或者您可以创建一个组并以正确的音量启动您的音频:

    let effectAudioAction = SKAction.playSoundFileNamed("electricshockLow.mp3", waitForCompletion: false)
    let changeVolumeAction = SKAction.changeVolume(to: 0.3, duration: 0.3)
    let effectAudioGroup = SKAction.group([effectAudioAction,changeVolumeAction])
    node.run(effectAudioGroup)
    

    【讨论】:

    • 对这些操作进行分组对我的 Xcode 项目没有影响。
    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多