gpt4 book ai didi

ios - SceneKit - 音频在我第一次播放声音时导致 cxa_throw 延迟

转载 作者:行者123 更新时间:2023-11-28 07:02:35 25 4
gpt4 key购买 nike

我播放这样的声音(在 SCNNode 子类中):

    let audioSource = SCNAudioSource(named: "coin.wav")
let audioPlayer = SCNAudioPlayer(source: audioSource)
self.addAudioPlayer(audioPlayer)

第一次调用时,我遇到了严重的滞后,并抛出了一个期望值。当我禁用 All_Expection_Breakpoint 时,我注意到延迟。

我该怎么办?

enter image description here

最佳答案

C++ 异常来自 SceneKit 音频层使用的 AVAudioEngine。 AVAudio* 框架在内部使用 C++ 异常,因此如果您在 Xcode 中设置断点以在抛出 C++ 异常时中断 Xcode 将在 AVAudio* 代码中中断很多(主要是在初始时间)。您可以放心地忽略它们,因为它们无论如何都会在到达您的代码之前被框架捕获。

如果你不想要延迟,你可以实例化你的音频源并在启动时加载它: 让 audioSource = SCNAudioSource(命名为:“coin.wav”) audioSource.load()

然后在以后需要时添加播放器: 让 audioPlayer = SCNAudioPlayer(来源:audioSource) self.addAudioPlayer(audioPlayer)

顺便说一句,播放器是缓存和回收的,所以你不必太担心内存被白白占用。

另请注意,SCNAction 使用的 API 与您使用的 API 完全相同,因此,如果您创建的 Action 带有之前未使用 .load() 加载到内存中的声音,您也会遇到延迟。

希望对您有所帮助,

S.

关于ios - SceneKit - 音频在我第一次播放声音时导致 cxa_throw 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31700145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com