调节SKAction的音量playSoundFileNamed:

Dob*_*pir 13 objective-c ios sprite-kit swift

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

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

Chr*_*ino 10

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

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];
Run Code Online (Sandbox Code Playgroud)

masterVolume变量只是一些预设变量,用户可以从0.0-1.0更改

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

希望这可以帮助!


Gio*_*lzo 5

不幸的是,您无法使用SKAction修改音量,因此您也必须使用AVAudioPlayer来产生效果。您可以按照已经想到的使用runBlock实现自定义playSoundFileNamed:waitForCompletion:volume:,因此与使用playSoundFileNamed:waitForCompletion:相比,您的代码不会有太大不同。