如何在Scenekit.scene之上创建HUD

时间:2014-06-25 21:49:39

标签: swift sprite-kit hud scenekit

我尝试使用Swift和Scenekit。 构建Mac OS X应用程序。 让3D场景工作似乎很容易。 但是没有某种2D高分,雷达显示,速度指示器等的场景是什么? 我希望SpriteKit场景可以无缝集成到SceneView中,但是我没有找到关于此的文档。

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

4 个答案:

答案 0 :(得分:8)

  

scnView.overlaySKScene = aSKScene;

(参见SCNSceneRenderer.h) 这是推荐的方式。另一种方法是支持SCNView层并添加子视图或图层(但效率较低)。

答案 1 :(得分:4)

要创建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;

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

答案 2 :(得分:2)

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

scnView.overlaySKScene = aSKScene

在您的SCNView上添加SKScene。

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

答案 3 :(得分:0)

@Toyos回答说,使用scnView.overlaySKScene一天很简单。如果您想要一个示例,您可以查看Apple如何在Bananas demo中执行此操作。