是否可以将 SKScene 与 UIView 控制器一起使用?

Is it possible to use a SKScene with a UIView Controller?

我在我的视图中使用 CoreMotion 来获取我 phone 中的加速度和旋转值。我的应用程序有多个使用视图控制器的视图,因为我处理数据传输,所以我使用 UIViewController 设置 accelerometer/gyroscope 的视图。但是,我想根据我从加速度计和陀螺仪获得的值显示一个球在屏幕上移动的图像。我一直在查看教程,这似乎只针对游戏。有没有一种方法可以在不使用 SKScene 的情况下显示使用 CoreMotion 移动的球?

你有2个选择。要么尝试使用 UIView 的内置动画控件,如下例所示:

UIView.animate(withDuration: 1) { 

    //Insert Animations Here
}

或者,您始终可以在视图控制器的主视图中创建一个视图,并将该视图设为 SKView 并使用它呈现一个 SKScene。

类似于以下内容:

sceneView = SKView(frame: CGRect(x: 0, y: 0, width: 666, height: 500))
sceneView.backgroundColor = UIColor.black
self.view.addSubview(sceneView)

if let view = self.sceneView as SKView? {
    // Load the SKScene from 'GameScene.sks'
    if let scene = SKScene(fileNamed: "GameScene") {
        // Set the scale mode to scale to fit the window
        scene.scaleMode = .aspectFill

        // Present the scene
        view.presentScene(scene)
    }

    view.ignoresSiblingOrder = true


}

用首选值替换宽度和高度。

Is it possible to use a SKScene with a UIView Controller?

是的。你可能已经在不知不觉中这样做了。

SpriteKit 和 Cocoa Touch 的视图架构之间的桥梁是 SKView。许多基于 SpriteKit 的应用程序只有一个视图控制器,其视图是 SKView,然后它们通过在 SpriteKit 中完成所有绘制并仅更改精灵场景来处理游戏的不同阶段。但是您不必那样工作——您可以将 SKView 与其他视图和控件混合使用,并且您可以使用任意数量的视图控制器。

这是另一个视图中 SKView 的截图,由嵌入在导航控制器中的视图控制器管理:

紫色区域是一个普通的旧视图UIView -- 只有黑色区域是一个 SpriteKit 视图。

Is there a way I can show a ball that uses CoreMotion to move without using SKScene?

是的。如果你只想在屏幕上移动一个球,UIKit animation built into UIView几乎肯定绰绰有余。