有没有更好的方法来播放精灵套件iOS 10 Xcode 8中的环境声音?

时间:2016-12-13 04:07:12

标签: objective-c audio sprite-kit xcode8 ios10

我有一种在基于精灵工具包的游戏中播放环境声音的方法,但我想知道是否有更好的方法。我已经在前面的类型中看到了环境声音函数,但它似乎是框架使用的东西,而不是框架用户的东西。

这是我目前正在做的事情

ObjectId

2 个答案:

答案 0 :(得分:3)

您可以使用AVAudioPlayer。

Objective-C中的样本:

audioPlayer文件中添加.h

@property (strong, nonatomic)AVAudioPlayer *audioPlayer;

然后在你的.m文件中使用它:

NSString *path = [NSString stringWithFormat:@"%@/background.mp3",[[NSBundle mainBundle] resourcePath]];
NSURL *fileURL = [NSURL fileURLWithPath:path];

_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
_audioPlayer.numberOfLoops = -1; //Infinite
[_audioPlayer prepareToPlay];
[_audioPlayer play];

在Swift 3中是这样的:

 func playMusic() {
    let path = Bundle.main.path(forResource: "background", ofType: "mp3")
    let fileURL = URL(fileURLWithPath: path!)
    do {
        audioPlayer = try AVAudioPlayer(contentsOf: fileURL)
    } catch {
        print("error play music")
    }
    audioPlayer.numberOfLoops = -1 //Infinite
    audioPlayer.prepareToPlay()
    audioPlayer.play()
}

对于无限循环播放,您需要将numberOfLoops设置为-1

答案 1 :(得分:2)

SKAudioNode是在游戏中获取环境音频的最佳方式。它建立在AVFoundation之上,可以与SKAction一起使用来改变声音的音量或提供三维位置声音。此外,SKScene具有audioEngine属性,其类型为AVAudioEngine。这将允许您一次管理所有音频节点,以便您需要停止所有音频或更改所有音频的整体音量。