11

我正在试验 Swift 和 Scenekit。构建 Mac OS X 应用程序。让 3d 场景工作似乎很容易。但是没有某种 2D 高分、雷达显示、速度指示器等的场景是什么?我希望 SpriteKit 场景能够无缝集成到 SceneView 中,但我发现文档对此并不十分清楚..

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

4

4 回答 4

11

try

scnView.overlaySKScene = aSKScene;

(see SCNSceneRenderer.h) This is the recommended way. An alternative way is to make the SCNView layer backed and add child views or layers (but this is less efficient).

于 2014-06-25T23:08:18.600 回答
7

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

于 2016-02-03T20:03:15.457 回答
2

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

scnView.overlaySKScene = aSKScene

在您的 SCNView 上叠加 SKScene。

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

于 2014-07-15T01:16:46.970 回答
0

正如@Toyos 回答的那样,日常使用scnView.overlaySKScene. 如果你想要一个例子,你可以在他们的Bananas 演示中查看 Apple 是如何做到的。

于 2014-06-26T14:32:12.677 回答