使用 Sprite Kit 播放背景音乐

问题描述 投票:0回答:2

我是 Sprite Kit 的新手,目前正在开发我的第一个游戏。 现在我想添加一些背景音乐(也许稍后还有一些效果),并用这段代码尝试一下:

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()
    }
   

但由于某种原因它不起作用。我注意到当我播放音乐然后运行游戏时,音乐停止了,但我听不到游戏音乐。

swift sprite-kit
2个回答
2
投票

player
变量是
playBackgroundPlayer
函数的局部变量。当您开始播放音乐时,该功能退出。当函数退出时,
player
不再存在。这可以解释为什么音乐停止了。

修复方法是将 AVAudioPlayer 的属性添加到包含

playBackgroundPlayer
函数的类或结构中。在初始化类或结构时创建 AVAudioPlayer 实例。在
play
中调用
playBackgroundPlayer
函数。


0
投票

您还可以尝试使用 SKAction 来播放音乐:

https://developer.apple.com/documentation/spritekit/skaction/1417664-playsoundfilenamed

它可以工作,但目前有点问题。较大的 MP3 文件似乎会使游戏或应用程序崩溃。

我一直在使用一个 AVPlayer 单例作为背景音乐(2023 年 12 月),只是因为它更可靠。

但是,AVPlayer 无法与 iTunes 或 Apple Music 同时工作,因此理想情况下 SKAction 是 SpriteKit 未来版本中的首选方法。

© www.soinside.com 2019 - 2024. All rights reserved.