我想要什么
无限的背景,在屏幕中间随机添加对象(在我的例子中是小星星)。然后这些物体需要以一定的速度移出屏幕。这样,我想让用户感觉他们正在“进入太空”,看到他们正在经过的星星。
我有什么
带有uiviewController类的单视图应用程序。
问题
我认为正确的方法是添加一个skscene来完成我想要的任务。但是,将skscene类添加到uiviewcontroller旁边会给出一个错误:“从类'uiviewcontroller'和'skscene'进行多重继承”。为了调用一些重要的函数,我需要将skscene添加到现有的uiviewcontroller中。在StackOverflow上搜索这个时,我遇到了这样的问题:SKScene in UIViewController但是我不能调用诸如“override func update(current time:cfTimeInterval)”之类的某些函数,因为答案不显示如何实现skscene类。此答案将删除整个uiviewController类:Adding an SKScene to a UIViewController?。其他的答案对我没有帮助。
问题
将skscene类添加到现有的uiviewController类中的正确方法是什么,这样我就可以完成我想要的工作?
编辑:在9gag上看到了这一点,这正是我想要的:http://9gag.com/gag/aWmZAPZ那些星星来自左上角,重播应该在我的应用程序屏幕中间。

最佳答案

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

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)
    }
    ...

}

关于swift - 将SKScene添加到UIViewController会给我带来错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42040450/

10-13 03:55