Регулировка громкости SKAction playSoundFileNamed:
Есть ли способ регулировать громкость звука, воспроизводимого с помощью SKAction playSoundFileNamed: waitForCompletion:.
Я хотел бы реализовать простой слайдер музыки и звуковых эффектов в своей игре. Я могу легко управлять фоновой музыкой, так как я проигрываю ее через AVAudioPlayer, но все звуковые эффекты воспроизводятся через SKAction.
Ответы
Ответ 1
К сожалению, вы не можете изменять громкость с помощью SKAction, поэтому вам также нужно использовать AVAudioPlayer для ваших эффектов.
Вы можете реализовать пользовательский playSoundFileNamed: waitForCompletion: volume: используя runBlock, как вы уже думали, поэтому ваш код будет не совсем другим, а затем используйте playSoundFileNamed: waitForCompletion:.
Ответ 2
Вот мой код для того, как я справился с этой проблемой
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 гарантирует, что плеер не будет удален до того, как он воспроизведет весь звук
Надеюсь, это поможет!