SCNAction playAudio, кажется, вызывает сбой - PullRequest
1 голос
/ 18 октября 2019

Я вижу сбой в SceneKit, которого не было до iOS 13.1.2.

Я проследил проблему до следующей функции и не могу полностью выяснить, что вызывает проблему.

Если я закомментирую строку, которая запускает действие на узле, все хорошо.

Я могу запустить действия playAudio на других уже существующих узлах сцены, но когда я просто хочу получитьВоспроизведение звука одним выстрелом с использованием приведенной ниже функции, приложение вылетает.

Так что я думаю, что, возможно, это как-то связано с тем, как я создаю экземпляр узла, но я не могу придумать другого способа создания экземпляра узлапросто для воспроизведения звука в заданной позиции.

Я также пытался использовать переработанный источник звука, но это не имеет значения.

Возможно, у кого-нибудь есть какие-либо идеи о том, что может происходить в этомкод, чтобы вызвать сбой? Это просто неочевидно для меня, тем более что это работало безупречно до обновления iOS.

Я включил обратную трассировку ниже.

Большое спасибо за любую помощь / идеи!

Хороших выходных!

Приветствия!

func play(sound: String, atPosition: SCNVector3, volume: Float, pitch: Float, loops: Bool, positional: Bool) {

// Sources will be pre-loaded and recycled for the finished app

if let source = SCNAudioSource(fileNamed: "art.scnassets/"+sound)
{
source.volume = volume
source.rate = pitch
source.isPositional = positional
source.shouldStream = false
source.loops = loops
source.load()

let node = SCNNode()

node.name = "oneShot"

node.position = atPosition

scnScene.rootNode.addChildNode(node)

// node.runAction(SCNAction.sequence([SCNAction.playAudio(source, waitForCompletion: true), SCNAction.removeFromParentNode()]))

// This line causes the crash

node.runAction(SCNAction.playAudio(source, waitForCompletion: false))

}

}
  • тема # 14, имя = 'com.apple.scenekit.scnview-renderer', queue = 'com. 140 кадр № 2: 0x00000001bd5b66e8 AVFAudio AVAudioEngineImpl::AttachNode(AVAudioNode*, bool) + 272 frame #3: 0x00000001bd5b2324 AVFAudio - [AVAudioEngine attachNode:] + 80 кадр № 4: 0x00000001c4aea48c SceneKit CPP3DAudioContext::AddVoice(void const*) + 120 frame #5: 0x00000001c4aeacf0 SceneKit CPP3DAudioEngine :: AddVoice (void const *) + 192 кадр00N000 * 6 0 30 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 6 0 6 0 0 0 0 6 0 0 6 0 0 6 6 0 СО 2 0 СО 6ННН 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 6 6 0 6 0 0 6 0 6 6 0 0СЦ:addAudioPlayer:] + 132 фрейма # 8: 0x00000001c49325e0 SceneKit SCNCPlaySound::cpp_updateWithTargetForTime(SCNNode*, double) + 96 frame #9: 0x00000001c499c690 SceneKit SCNActionApply + 112 фрейма # 10: 0x00000001c4a2d7a4 SceneKit _applyActions + 236 frame #11: 0x00000001b0a8e1b8 CoreFoundation - [ NSFrozenDictionaryM __apply: контекст:] 00000 фреймов Sc: 0 0 0 800 ф. eKit C3DAnimationManagerApplyActions + 104 frame #13: 0x00000001c4a173e4 SceneKit - [SCNRenderer _update:] + 576 frame # 14: 0x00000001c4a19a04 SceneKit -[SCNRenderer _drawSceneWithNewRenderer:] + 200 frame #15: 0x00000001c4a19fbc SceneKit - [SCNRenderer _drawScene:] + 48 кадр # 16: 0x00000001c4a1a350 SceneKit -[SCNRenderer _drawAtTime:] + 616 frame #17: 0x00000001c4ab46b8 SceneKit]: SCE 18T: - SCE0x00000001c497ae38 SceneKit __69-[NSObject(SCN_DisplayLinkExtensions) SCN_setupDisplayLinkWithQueue:]_block_invoke + 56 frame #19: 0x00000001c4a7fe48 SceneKit __ 36- [SCNDisplayLink _callbackWithTime:] _ block_invoke + 64 кадр # 20: 0x0000000105726c04 libdispatch.dylib _dispatch_client_callout + 16 frame #21: 0x0000000105735888 libdispatch.dylib 124 + _dispatch_lane_barrier_sync_invoke_and_complete кадр # 22: 0x00000001c4a7fdd8 SceneKit * * тысяча тридцать девять - [DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 168 кадр # 24:0x00000001b73da514 QuartzCore CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 632 frame #25: 0x00000001b1acdeb0 IOKit IODispatchCalloutFromCFMessage + 488 кадр # 26: 0x00000001b0ae96d4 CoreFoundation __CFMachPortPerform + 172 frame #27: 0x00000001b0b12e5c CoreFoundation __ CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION * тысяча сорок-две + 56 кадр # 28: 0x00000001b0b12588 CoreFoundation * +1043 * CFRunLoopRun + 2168 кадр # 30: 0x00000001b0b0c8bc CoreFoundation CFRunLoopRunSpecific + 464 frame #31: 0x00000001b0e4c994 Foundation - [NSRunLoop(NSRunLoop) runMode: beforeDate:] + 228 frame # 32: 0x00000001c497b214 SceneKit __71-[SCNView(SCNDisplayLink) _initializeDisplayLinkWithCompletionHandler:]_block_invoke + 456 frame #33: 0x00000001c497b45c SceneKit __ SCNRenderThread_start + 96 frame # 34: 0x00000001b08b11ec libsystem_pthread.dylib`_pthread_start + 124
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...