This is the first time I use SKAudioNode. First I declared a property at the top of my GameScene
class:
var backgroundMusic: SKAudioNode!
Now I added a helper method:
func playBackgroundMusic(name: String) {
if backgroundMusic != nil {
backgroundMusic.removeFromParent()
}
backgroundMusic = SKAudioNode(fileNamed: name)
backgroundMusic.autoplayLooped = true
addChild(backgroundMusic)
}
Now I called this method like this:
playBackgroundMusic("ABC.caf")
It throws an fatal error on this line:
backgroundMusic.autoplayLooped = true
Saying: unexpected found nil while unwrapping optional value.
I did make sure the following
- ABC.caf is in my project and is listed in the copy bundle resources.
- It is spelled correctly.
Now where else should I check for errors?
EDIT:
Here are my configuration info:
- Xcode 7.3
- iPhone with iOS 9.3.2
- Simulator with iOS 9.3
Both the device and the simulator doesn't work.
EDIT2:
I changed my codes to the following:
func playBackgroundMusic(name: String) {
if backgroundMusic != nil {
backgroundMusic.removeFromParent()
}
let temp = SKAudioNode(fileNamed: name)
temp.autoplayLooped = true
backgroundMusic = temp
//backgroundMusic = SKAudioNode(fileNamed: "SpaceGame.caf")
//backgroundMusic.autoplayLooped = true
addChild(backgroundMusic)
}
Now my app doesn't crash anymore but it has no sounds. Any ideas?
P.S. Few minute after I last edited that question I tried replacing everything in that method with:
runAction(SKAction.playSoundFileNamed(name, waitForCompletion: false))
Still no sound. Perhaps a problem with the sound file?
backgroundMusic
will not end up as nil, but rather with some kind of an "empty" SKAudioNode. Still, it will not crash. By the way, have you tried to re-add the sound? You know, delete it from project, then go Product-> clean, then drag the same sound again to the project and add it to Copy Bundle Resources section... Just to see if this is not related to some weird caching issue (but I doubt that). – Pickel