这是我第一次使用 SKAudioNode。首先,我在GameScene
班级顶部声明了一个属性:
var backgroundMusic: SKAudioNode!
现在我添加了一个辅助方法:
func playBackgroundMusic(name: String) {
if backgroundMusic != nil {
backgroundMusic.removeFromParent()
}
backgroundMusic = SKAudioNode(fileNamed: name)
backgroundMusic.autoplayLooped = true
addChild(backgroundMusic)
}
现在我这样调用这个方法:
playBackgroundMusic("ABC.caf")
它在这一行抛出一个致命错误:
backgroundMusic.autoplayLooped = true
说:在展开可选值时意外发现 nil。
我确实确保了以下内容
- ABC.caf 在我的项目中,并在复制包资源中列出。
- 它拼写正确。
现在我还应该在哪里检查错误?
编辑:
这是我的配置信息:
- Xcode 7.3
- 装有 iOS 9.3.2 的 iPhone
- iOS 9.3 模拟器
设备和模拟器都不起作用。
编辑2:
我将代码更改为以下内容:
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)
}
现在我的应用程序不再崩溃,但没有声音。有任何想法吗?
PS 在我上次编辑该问题后几分钟,我尝试将该方法中的所有内容替换为:
runAction(SKAction.playSoundFileNamed(name, waitForCompletion: false))
还是没有声音。也许声音文件有问题?