【问题标题】:Adding SKScene to UIViewController gives me errors将 SKScene 添加到 UIViewController 会给我错误
【发布时间】:2017-02-04 12:37:22
【问题描述】:

我想要什么

一个无限的背景,将对象(在我的例子中是小星星)随机添加到屏幕中间。然后这些物体需要以一定的速度移出屏幕。通过这种方式,我想给用户一种他们正在“进入太空”的感觉,看到他们正在经过的星星。

我有什么

具有 UIViewController 类的单视图应用程序。

问题

我认为正确的方法是添加一个 SKScene 来完成我想要的任务。但是,在 UIViewController 旁边添加 SKScene 类会给我一个错误:“从类 'UIViewController' 和 'SKScene' 的多重继承”。我需要将 SKScene 添加到现有的 UIViewController 中,以便调用一些重要的功能。在 Stackoverflow 上搜索这个时,我遇到了这个:SKScene in UIViewController 但我不能调用某些函数,如“覆盖函数更新(当前时间:CFTimeInterval){}”,因为答案没有显示如何实现 SKScene 类。这个答案删除了整个 UIViewController 类:Adding an SKScene to a UIViewController?。其他答案对我没有帮助。

问题

将 SKScene 类添加到现有 UIViewController 类的正确方法是什么,这样我就可以完成我想要的?

编辑:在 9gag 上看到了这个,这正是我想要的:http://9gag.com/gag/aWmZAPZ 这些星星来自左上角,重生应该在我应用的屏幕中间。

【问题讨论】:

  • 正如对链接问题的回答所解释的那样,您不能直接将 SKScene 添加到 UIView,SKScene 根本不是视图,要显示它,您必须首先将其添加到 SKView。
  • 好的,但是将 SKView 添加到现有的 uiviewcontroller 怎么样?这可能吗?

标签: swift sprite-kit skscene


【解决方案1】:

当然,这是可能的。而不是直接将SKScene添加到UIViewController,您需要先将SKScene扭曲为SKView,然后将SKView添加到UIViewController

import UIKit
import SpriteKit


class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Configure the view.
        // Core:- convert the base view/UIView of UIViewController to SKView
        let rootView = self.view as! SKView
        //            skView.showsFPS = true
        //            skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        rootView.ignoresSiblingOrder = true
        rootView.frameInterval = 1

        //init your SKScene
        let rootMenuScene = YourScene(size: rootView.bounds.size)
        rootMenuScene.scaleMode = .resizeFill

        //warp in SKView
        rootView.presentScene(rootMenuScene) 
    }
    ...

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多