Swift 如何在Scenekit.scene顶部创建HUD

Swift 如何在Scenekit.scene顶部创建HUD,swift,sprite-kit,hud,scenekit,Swift,Sprite Kit,Hud,Scenekit,我正在试验斯威夫特和斯奇内基特。 构建MacOSX应用程序。 让3d场景工作起来似乎很容易。 但是,如果没有某种2D高分、雷达显示、速度指示器等,场景会是什么呢? 我希望SpriteKit场景能够无缝地集成到SceneView中,但我发现文档中对此并不十分清楚 我能想到的最明显也是唯一的方法是将SKView放置在SceneView上,并分别渲染每个场景。 但是还有更优雅的方式吗?试试看 scnView.overlaySKScene = aSKScene; (见SCNSCENERENDER.h)

我正在试验斯威夫特和斯奇内基特。 构建MacOSX应用程序。 让3d场景工作起来似乎很容易。 但是,如果没有某种2D高分、雷达显示、速度指示器等,场景会是什么呢? 我希望SpriteKit场景能够无缝地集成到SceneView中,但我发现文档中对此并不十分清楚

我能想到的最明显也是唯一的方法是将SKView放置在SceneView上,并分别渲染每个场景。 但是还有更优雅的方式吗?

试试看

scnView.overlaySKScene = aSKScene;
(见SCNSCENERENDER.h)
这是推荐的方法。另一种方法是将SCNView图层放在后面,并添加子视图或图层(但效率较低)。

正如@Toyos所回答的,使用
SCNView.overlyskscene
每天都很简单。如果你想要一个例子,你可以看看苹果是如何在他们的网站上做到这一点的。

正如@Toyos上面所说的,你可以使用

scnView.overlaySKScene = aSKScene
将场景叠加到SCN视图上


但是,当我在Swift中尝试此操作时,我发现只有在包含
import SpriteKit
语句时,
overlysksene
属性才可见。

要创建HUD,请执行以下操作:

// SKContainerOverlay is a class which inherits from SKScene

    SKContainerOverlay *skContainerOverlay = [[SKContainerOverlay alloc] initWithSize:self.sceneView.bounds.size];
    self.sceneView.overlaySKScene = skContainerOverlay;
    self.sceneView.overlaySKScene.hidden = NO;
    self.sceneView.overlaySKScene.scaleMode = SKSceneScaleModeResizeFill; // Make sure SKScene bounds are the same as our SCNScene
    self.sceneView.overlaySKScene.userInteractionEnabled = YES;

您可以在自定义
SKContainerOverlay
类中创建所有
SKLabelNode
对象。

查看示例代码表单WWDC 14。它在场景工具包顶部显示一个使用精灵工具包的HUD。+1:)您可以在和示例代码项目中找到更多信息。SK overlays的另一个好处是,您可以使HUD跨平台,而不是在iOS上使用UIKit,在OSX上使用AppKit。它无法运行。你能在10.9.3上运行代码吗?swift是否有“Overlyskscene”等效功能?SceneKit/SpriteKit集成是一个10.10功能,正如您在香蕉中看到的其他一些功能一样。不过,该项目确实有一个iOS目标,因此您也可以尝试在iOS 8测试版设备上运行它。感谢您提供了一个真实的答案,而不是指向文档或示例应用程序。