如何从UIViewController呈现SKScene

问题描述 投票:0回答:1

我正在SpriteKit中创建此游戏。首次启动时,GameViewController会提供另一个与情节提要链接的ViewController,称为MenuViewController。在MenuViewController中有一个播放按钮,将显示一个称为GameScene的SKScene。

我从MenuViewController中找出了如何显示GameViewController的方法,但是当点击播放按钮时,我找不到找到GameScene的方法。在我的代码中,当点击按钮时,实际上什么也没发生。

GameViewController

import UIKit
import SpriteKit

class GameViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {

        let storyBoard: UIStoryboard = UIStoryboard(name: "MenuViewController", bundle: nil)
        let vc = storyBoard.instantiateViewController(withIdentifier: "MenuViewController") as! MenuViewController
        self.present(vc, animated: true, completion: nil)

    }

} 

并且在MenuViewController中:

import UIKit
import SpriteKit

class MenuViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    @IBAction func playButtonTapped(_ sender: Any) {

         if let view = self.view as! SKView? {
            let scene = GameScene(size: view.bounds.size)
            scene.scaleMode = .aspectFill 
            view.presentScene(scene)
            view.ignoresSiblingOrder = true
            view.showsFPS = false
            view.showsNodeCount = false
            view.showsPhysics = false

         }
    }

}

此外,我也将此警告打印在控制台中:

SKView: ignoreRenderSyncInLayoutSubviews is NO. Call _renderSynchronouslyForTime without handler

我不知道这是否相关...

我确实将MenuViewController故事板的视图设置为等于SKView。我找不到使GameScene出现的任何方法。什么也没发生。

谢谢!

ios swift uiviewcontroller skscene
1个回答
0
投票

根据Apple开发文档,需要为“视图”显示“场景”。尝试这个。 :)

@IBAction func playButtonTapped(_ sender: Any) {

     if let view = self.view as? SKView {
        let scene = GameScene(size: view.bounds.size)
        scene.scaleMode = .aspectFill
        view.ignoresSiblingOrder = true
        view.showsFPS = false
        view.showsNodeCount = false
        view.showsPhysics = false

        // Add this code
        view.presentScene(scene)
     }
}

https://developer.apple.com/documentation/spritekit/skview/1519705-presentscene

© www.soinside.com 2019 - 2024. All rights reserved.