我怎样才能覆盖SKScene在Swift的SCNScene?
在互联网上有一些覆盖教程,在某些时候都使用overlaySKScene
。
这在某种程度上是不可能在我的项目中,因为(我猜)我的视图不使用SCNView
的构造函数( overlaySKScene
是其中的一部分)。
在ViewController的viewDidLoad中,基本上只有MainScene被创build:
viewDidLoad() { self.sceneView = MainScene(view: self.view)) }
…在这里(注:SCNScene而不是SCNView):
class MainScene: SCNScene, SCNPhysicsContactDelegate {... init(view:UIView) { scnView = view as! SCNView super.init() scnView.scene = self; (...) }
现场是完全创build的,现在我想覆盖SKScene。 有谁知道如何?
SpriteKit叠加在SceneKit视图上,而不在SceneKit场景中。 这有点令人困惑,因为你在视图上叠加了一个场景。
我看到几个可能的错误来源:
self.sceneView = MainScene(view: self.view))
如定义的那样返回一个SCNScene
。 您正在将其分配给期望SCNView
的属性。
该线
scnView = view as! SCNView
将会崩溃,除非view
返回一个正确连接的SCNView
实例。 但是你写的init
定义需要一个UIView
。
在某处,你需要让你的视图成为一个SCNView
。 这个视图,因为它符合协议SCNSceneRenderer
,将有一个overlaySKScene
属性( overlaySKScene
来自该协议,而不是从SCNView
)。 这就是您可以分配SKScene
实例的地方。
如果你已经这样做了,那么你的代码看起来就像
scnView.scene = self scnView.overlaySKScene = theSKScene
在https://github.com/halmueller/ImmersiveInterfaces/tree/master/Tracking%20Overlay上有一个覆盖在SCNView
上的SCNView
的简单例子
另请参见如何在Scenekit.scene之上创buildHUD 。