SCNSceneRendererDelegate中的renderer函数只是输入调用,不会自动调用

The renderer function in SCNSceneRendererDelegate is only called by input, not automatically

我知道这个问题之前已经讨论过很多次了。然而,我不清楚整个事情是如何在 SwiftUI.

中实现的

目前:

输入(例如移动相机)后渲染器函数被正确调用。

目标:

渲染器函数也应该在不需要输入的情况下被调用。

设置:

struct ContentView: View {
    @ObservedObject var gameData : GameViewModel
    
    var body: some View {
        SceneView(
            scene: gameData.scene,
            pointOfView: gameData.camera,
            options: [
                .allowsCameraControl
            ],
            delegate: gameData
        )
    }
}


class GameViewModel: NSObject, ObservableObject { ... }


extension GameViewModel: SCNSceneRendererDelegate {
    func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { ... }
}

这由 SCNView 上的 rendersContinuously 属性 控制。

使用 SwiftUI 时,rendersContinuously 选项可与 SceneView .init(scene:pointOfView:options:preferredFramesPerSecond:antialiasingMode:delegate:technique:)

一起使用