问题描述
所以我有一个问题,而不是了解代码而不是找到解决方案。在addobserver(...)方法中,我描述了CGPoint类型的“ position”变量的路径,因为它具有我想获取的所有信息作为观察值。但是在observe(forKeyPath ...)方法中,该对象是我的自定义OverlayScene类的入口,该类不是keyPath中的最后一个对象,而是第一个对象。它会影响性能还是我应该忽略它?
class GameViewController: UIViewController,SCNPhysicsContactDelegate,SCNSceneRendererDelegate {
...
var overlay: OverlayScene!
override func viewDidLoad() {
super.viewDidLoad()
...
setupOverlay()
}
...
func setupOverlay() {
overlay = OverlayScene(size: view.bounds.size)
overlay.addobserver(self,forKeyPath: #keyPath(OverlayScene.steeringNode.ball.position),options: .new,context: nil)
sceneView.overlaySKScene = overlay
}
override func observeValue(forKeyPath keyPath: String?,of object: Any?,change: [NSkeyvalueChangeKey : Any]?,context: UnsafeMutableRawPointer?) {
if keyPath == #keyPath(OverlayScene.steeringNode.ball.position) {
print("change observed")
if let scene = object as? OverlayScene {
print(scene.steeringNode.ball.position)
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)