将scenekit和spritekit组合在一个屏幕中

Posted

技术标签:

【中文标题】将scenekit和spritekit组合在一个屏幕中【英文标题】:Combining scenekit and spritekit in a single screen 【发布时间】:2014-12-01 22:57:28 【问题描述】:

抱歉,如果这是一个新手问题,我仍在尝试在 Swift 和 SpriteKit / SceneKit 中找到自己的方法。

是否可以将 SpriteKit 和 SceneKit 组合在一个视图中,例如使用 SpriteKit 在屏幕的一部分中渲染地图,同时使用 SceneKit 渲染主 3D 视图?

【问题讨论】:

【参考方案1】:

是的,你可以,它在 WWDC 的各种演示中都有展示。 查看SCNSceneRendereroverlaySKScene 属性。

【讨论】:

我在某个地方(可能是 WWDC)听说反过来——在 SpriteKit 之上绘制 SceneKit——应该是可能的,但还没有找到一些确凿的事实。有什么线索吗?【参考方案2】:

SceneKit 中使用SpriteKit 的一种方式如下:

SCNView *sceneView = [[SCNView alloc] initWithFrame:[[UIScreen mainScreen] bounds] options:@@"SCNPreferredRenderingAPIKey": @(SCNRenderingAPIOpenGLES3)];
[self.view addSubview:sceneView];
sceneView.scene = [SCNScene scene];

// ... whatever else you're doing

SKContainerOverlay *skOverlay = [[SKContainerOverlay alloc] initWithSize:self.sceneView.bounds.size];
skOverlay.delegate = self;    
self.sceneView.overlaySKScene = skOverlay; // the key to your question
self.sceneView.overlaySKScene.hidden = NO;
self.sceneView.overlaySKScene.scaleMode = SKSceneScaleModeResizeFill;

【讨论】:

以上是关于将scenekit和spritekit组合在一个屏幕中的主要内容,如果未能解决你的问题,请参考以下文章

iPhone X 上 SceneKit + SpriteKit 叠加的像素格式错误

SpriteKit 和 SceneKit – 如何完全暂停游戏?

将纯 Metal-API 与 SceneKit 或 SpriteKit 一起使用

SpriteKit和SceneKit - 如何完全暂停游戏?

SpriteKit/Scenekit TouchesBegan 或 GestureRecognizer

从SceneKit中检测SpriteKit按钮按叠加