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:)
一起使用
我知道这个问题之前已经讨论过很多次了。然而,我不清楚整个事情是如何在 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:)