我有一种在基于精灵工具包的游戏中播放环境声音的方法,但我想知道是否有更好的方法。我已经在前面的类型中看到了环境声音函数,但它似乎是框架使用的东西,而不是框架用户的东西。
这是我目前正在做的事情
ObjectId
答案 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
。这将允许您一次管理所有音频节点,以便您需要停止所有音频或更改所有音频的整体音量。