如何在 Swift 中将 SKScene 覆盖在 SCNScene 上?
How can I overlay a SKScene over a SCNScene in Swift?
网上有一些overlay的教程,都是用的
overlaySKScene
在某个时候。
这在我的项目中是不可能的,因为(我猜)我的观点在任何时候都不使用 SCNView
的构造函数(overlaySKScene
是其中的一部分)。
在ViewController的viewDidLoad中,基本上只创建了MainScene:
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; (...) }
场景完美创建,我现在想叠加一个SKScene。有人知道怎么做吗?
SpriteKit 叠加在 SceneKit 视图上,而不是在 SceneKit 场景上。这有点令人困惑,因为您要在视图上叠加场景。
我看到几个可能的错误来源:
self.sceneView = MainScene(view: self.view))
定义为 returns 和 SCNScene
。您将其分配给需要 SCNView
.
的 属性
行
scnView = view as! SCNView
除非 view
returns 正确连接 SCNView
实例,否则将崩溃。但是您编写的 init
定义需要 UIView
.
在某个地方,您需要将视图设置为 SCNView
。该视图,因为它符合协议 SCNSceneRenderer
,将在其上有一个 overlaySKScene
属性(overlaySKScene
来自该协议,而不是来自 SCNView
)。这是您可以分配 SKScene
实例的地方。
如果您这样做了,那么您的代码将类似于
scnView.scene = self
scnView.overlaySKScene = theSKScene
我有一个 SKScene
覆盖在 https://github.com/halmueller/ImmersiveInterfaces/tree/master/Tracking%20Overlay
的 SCNView
上的简单示例
另见 How do I create a HUD on top of my Scenekit.scene。
网上有一些overlay的教程,都是用的
overlaySKScene
在某个时候。
这在我的项目中是不可能的,因为(我猜)我的观点在任何时候都不使用 SCNView
的构造函数(overlaySKScene
是其中的一部分)。
在ViewController的viewDidLoad中,基本上只创建了MainScene:
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; (...) }
场景完美创建,我现在想叠加一个SKScene。有人知道怎么做吗?
SpriteKit 叠加在 SceneKit 视图上,而不是在 SceneKit 场景上。这有点令人困惑,因为您要在视图上叠加场景。
我看到几个可能的错误来源:
self.sceneView = MainScene(view: self.view))
定义为 returns 和 SCNScene
。您将其分配给需要 SCNView
.
行
scnView = view as! SCNView
除非 view
returns 正确连接 SCNView
实例,否则将崩溃。但是您编写的 init
定义需要 UIView
.
在某个地方,您需要将视图设置为 SCNView
。该视图,因为它符合协议 SCNSceneRenderer
,将在其上有一个 overlaySKScene
属性(overlaySKScene
来自该协议,而不是来自 SCNView
)。这是您可以分配 SKScene
实例的地方。
如果您这样做了,那么您的代码将类似于
scnView.scene = self
scnView.overlaySKScene = theSKScene
我有一个 SKScene
覆盖在 https://github.com/halmueller/ImmersiveInterfaces/tree/master/Tracking%20Overlay
SCNView
上的简单示例
另见 How do I create a HUD on top of my Scenekit.scene。