Ios 当我添加SKAudioNode时,模拟器中的应用程序崩溃?

Ios 当我添加SKAudioNode时,模拟器中的应用程序崩溃?,ios,xcode,sprite-kit,Ios,Xcode,Sprite Kit,好的,所以应用程序加载了初始的MenuScene很好,但是当我想转移到模拟器上的游戏场景时,游戏崩溃了,它给了我“线程1:信号SIGABRT” 通过对一些内容进行评论并查看它是否仍在运行,我发现导致应用程序崩溃的唯一原因是将SKAudioNodes添加到场景中 我已经在我的实际设备上进行了测试,但效果很好。我的代码有问题吗?还是模拟器有问题 控制台打印出一堆我无法真正理解的东西。这只是其中的一部分 [aqme]318:错误-66680查找/初始化aqme设备 80:无法在设备上设置process

好的,所以应用程序加载了初始的MenuScene很好,但是当我想转移到模拟器上的游戏场景时,游戏崩溃了,它给了我“线程1:信号SIGABRT”

通过对一些内容进行评论并查看它是否仍在运行,我发现导致应用程序崩溃的唯一原因是将SKAudioNodes添加到场景中

我已经在我的实际设备上进行了测试,但效果很好。我的代码有问题吗?还是模拟器有问题

控制台打印出一堆我无法真正理解的东西。这只是其中的一部分

[aqme]318:错误-66680查找/初始化aqme设备 80:无法在设备上设置processVolumeScalar。错误:560947818 AudioHAL\u客户端]AudioHardware.cpp:2692:AudioDeviceStop:AudioDeviceStop:没有具有给定ID的设备 AudioHardware.cpp:780:AudioObjectSetPropertyData:AudioObjectSetPropertyData:没有具有给定ID 0的对象

libc++abi.dylib:以NSException类型的未捕获异常终止

编辑:
经过进一步调查,我确定导致错误的代码行是我添加子“fuse”的代码行。

我感觉您的音频引擎尚未初始化(您无法执行任何操作,这都在Apple上),因此

试一试

如果不起作用,请尝试:

class GameScene: SKScene, SKPhysicsContactDelegate {
    let bg: SKAudioNode = SKAudioNode(fileNamed: "background.mp3")
    let fuse = SKAudioNode(fileNamed: "fuse.wav")


    override func didMove(to view: SKView) {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            [weak self]
            guard let strongSelf = self else {return}
            if soundIsOn {
                strongSelf.addChild(bg)
                strongSelf.addChild(fuse)
            }
        }
    }
}

如果有的话,让我知道哪一个有效。最好是,我们希望第一个可以工作,但是如果第二个只能工作,那么我们需要为您找到一个更好的位置来添加音频节点。

我感觉您的音频引擎还没有初始化(您什么也做不了,这都在Apple上),所以

试一试

如果不起作用,请尝试:

class GameScene: SKScene, SKPhysicsContactDelegate {
    let bg: SKAudioNode = SKAudioNode(fileNamed: "background.mp3")
    let fuse = SKAudioNode(fileNamed: "fuse.wav")


    override func didMove(to view: SKView) {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            [weak self]
            guard let strongSelf = self else {return}
            if soundIsOn {
                strongSelf.addChild(bg)
                strongSelf.addChild(fuse)
            }
        }
    }
}

如果有的话,让我知道哪一个有效。我们希望第一个可以工作,但是如果第二个只能工作,那么我们需要为您找到一个更好的位置来添加音频节点。

Simulator不支持音频输入框架。在真实设备中测试。@manishharma93是的。Alicia Natividad,发一些代码。我感觉您正在初始化音频引擎之前添加音频节点您可能拼错了一个变量。这可能是原因。另外,通过添加异常断点来检查导致NSException的代码行。你会马上知道的。您尚未初始化音频播放器。@ojassethi否。拼写错误的变量将导致编译器中断,
AVAudioPlayerDelegate
用于使用
AVAudioPlayer,
not
SKAudioNode
模拟器不支持音频输入框架。在真实设备中测试。@manishharma93是的。Alicia Natividad,发一些代码。我感觉您正在初始化音频引擎之前添加音频节点您可能拼错了一个变量。这可能是原因。另外,通过添加异常断点来检查导致NSException的代码行。你会马上知道的。您尚未初始化音频播放器。@ojassethi否。拼写错误的变量将导致编译器中断,
AVAudioPlayerDelegate
用于使用
AVAudioPlayer,
而不是
SKAudioNode
class GameScene: SKScene, SKPhysicsContactDelegate {
    let bg: SKAudioNode = SKAudioNode(fileNamed: "background.mp3")
    let fuse = SKAudioNode(fileNamed: "fuse.wav")


    override func didMove(to view: SKView) {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            [weak self]
            guard let strongSelf = self else {return}
            if soundIsOn {
                strongSelf.addChild(bg)
                strongSelf.addChild(fuse)
            }
        }
    }
}