首页 > 解决方案 > SpriteKit 不使用 SKAudioNode 或 SKAction.playSoundFileNamed 播放任何音乐

问题描述

我正在努力解决一个问题,即 SKAudioNode 和 SKAction.playSoundFileNamed 都不能帮助我在项目中播放音乐。音频文件格式为 mp3、wav 或 m4a

我检查了它是否适用于另一个项目。但它仍然发生。我认为这将是一个可重现的问题,所以我将在此处附上我的代码(* 如果下面的代码在您的电脑上工作,请在评论中通知我。)


import SpriteKit
import GameplayKit
import AVFoundation  // Needed...?

class GameScene: SKScene {

    override func didMove(to view: SKView) {
        let foo = SKAudioNode(fileNamed: "sample")
        self.addChild(foo)
    }

    override func keyDown(with event: NSEvent) {
        switch event.keyCode {
        case 49:
            let bar = SKAction.playSoundFileNamed("bubble", waitForCompletion: false)
            self.run(bar)
        default:
            print("keyDown: \(event.characters!) keyCode: \(event.keyCode)")
        }
    }


    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
    }
}

我只想播放 sample.wav 作为背景音乐,当按下 Space 时,播放 bubble.mp3 作为音效

下面的错误输出

[AudioHAL_Client] AudioHardware.cpp:666:AudioObjectGetPropertyData:  AudioObjectGetPropertyData: no object with given ID 0
SKAction: Error loading sound resource: "bubble"

谢谢你。

标签: sprite-kitswift4

解决方案


就我而言,音频文件位于 Assets.xcassets 中。但这是错误的。只需将所有音频文件放在项目组下。


推荐阅读