swift 使用Sprite Kit播放背景音乐

67up9zun  于 2024-01-05  发布在  Swift
关注(0)|答案(2)|浏览(107)

我是新的雪碧套件,目前正在开发我的第一个游戏。现在我想添加一些背景音乐(也许以后一些效果),并尝试用这段代码:

func playBackgroundMusic() {
        // 1 - Create player
        let url = Bundle.main.url(forResource: "mySong", withExtension: "mp3")!
        let player = try! AVAudioPlayer(contentsOf: url)
        
        // 2 - Play sound
        player.play()
    }

字符串
但由于某种原因,它不工作。我注意到,当我播放音乐,然后运行游戏,音乐停止,但我听不到我的游戏音乐。

tnkciper

tnkciper1#

player变量是playBackgroundPlayer函数的局部变量。当你开始播放音乐时,函数退出。当函数退出时,player不再存在。这可以解释为什么音乐停止。
修复方法是将AVAudioPlayer的属性添加到包含playBackgroundPlayer函数的类或结构中。在初始化类或结构时创建AVAudioPlayer示例。在playBackgroundPlayer内部调用play函数。

wj8zmpe1

wj8zmpe12#

您也可以尝试使用SKAction播放音乐:
https://developer.apple.com/documentation/spritekit/skaction/1417664-playsoundfilenamed
它工作,但它是一个小错误的时刻。较大的MP3文件似乎崩溃的游戏或应用程序。
我一直在使用一个AVPlayer单体作为背景音乐(2023年12月),只是因为它更可靠。
然而,AVPlayer无法与iTunes或Apple Music同时工作,因此理想情况下,SKAction是SpriteKit未来版本的首选方法。

相关问题