我想要什么
无限的背景,在屏幕中间随机添加对象(在我的例子中是小星星)。然后这些物体需要以一定的速度移出屏幕。这样,我想让用户感觉他们正在“进入太空”,看到他们正在经过的星星。
我有什么
带有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/