现在,我知道如何在SpriteKit游戏中过渡场景。我无法将大脑包裹起来的棘手问题是改变最初加载的大脑。我创造的游戏直接进入游戏。那个初始场景叫做GameScene.swift。我创建了一个MainMenuScene.swift,我试图将其更改为首先加载它。然后,一旦点击,我就会在下一个场景中进行SKTransition,就像我在游戏后期工作一样。
这是我的观点控制器代码:
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
// Configure the view.
let skView = self.view as SKView
//skView.showsFPS = true
//skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
}
我想改变" GameScene"到" MainMenuScene"会做的伎俩,但没有任何东西得到加载。然后我想也许这是大小,但所有设置都与其他场景相同。即使尝试添加节点计数,也不会显示任何内容。所以我假设没有任何东西被装载。也许我是盲目和愚蠢但我无法看到它。
提前致谢。
答案 0 :(得分:4)
使你的viewController像这样:
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let scene = MainMenuScene(size: view.bounds.size) //This can be any scene you want the game to load first
let skView = self.view as! SKView
skView.showsFPS = false
skView.showsNodeCount = false
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
skView.presentScene(scene)
}
}
在您的MainMenuScene.swift(以及您希望包含在游戏中的所有其他场景)中,确保该类本身如下所示:
class chooseScene: SKScene {
override func didMoveToView(view: SKView) {
} }
这是我在viewController和SKScenes中使用的代码,几个月前我遇到了与你完全相同的问题。
答案 1 :(得分:0)
试试这个
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
let scene = MainMenuScene(size: skView.frame.size)
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
MainMenuScene 中的,请确保添加这些初始值设定项
override init(size: CGSize) {
super.init(size: size)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}