首页 文章

在Swift中使用多个ViewControllers和SKScene

提问于
浏览
0

下面我有两种不同的方法来使用视图控制器和SKScene设置我的游戏 . 这一半我没有花太多时间,因为我希望这些其他解决方案之一能够奏效 . 下面更详细地描述:

  • MainViewController - > GameViewController(持有SKScene)

  • GameViewController(持有SKScene) - 使用协议

0.5两个SKScenes /两个swift自定义类 .

Number 1

MainViewController - > GameViewController(持有SKScene)

当游戏在SKScene结束时 - 我想解雇GameViewController并返回MainViewController .

我没有运气让它上班 . 我试过解雇视图控制器,而我最接近的就是使用类似的东西解析SKScene(在SKScene中:

self.view?presentScene(nil)

要么

self.dismiss(animated: false, completion: nil)
 self.presentingViewController?.dismiss(animated: false, completion: nil)

但是我无法回到MainViewController . 我已经尝试创建一个对GameViewController的引用来弹出它:

weak var gameViewController:GameViewController? = GameViewController()

不幸的是,我无法找到正确的功能来正确解雇它 .

经过大量的搜索而没有找到答案,我想我会尝试不同的方法 .

Number 2

GameViewController(持有SKView)然后让GVC按住我想要的按钮和标签并在顶部显示场景 . 这是一个失败,因为按钮和标签没有zPositions并出现在场景的顶部 .

我在调用场景之前尝试对它们进行 .isHidden = true ,这似乎有效,但当我解除场景并尝试将它们更改回 .isHidden = false (尝试使用协议)时,我无法让它工作 . (正在关注stvn描述的内容How to reference the current view controller from a sprite kit scene

我怀疑第二种方式可能是一种很好的方式,但也许我只是没有正确地接近它 .

Number 0.5

最后我现在想的是让第二个场景在两者之间来回“翻转” . 我相信这是推荐的做法,但我不确定如何处理它 . 如果我做了这个版本 . 我希望每个视图都有一个gameScene.swift / gameScene.sks(也许使用像presenting a uiviewcontroller for skscene这样的东西 .

我更喜欢使用两个视图控制器的第一种方式,因为我认为使用一些视图控制器,我的游戏布局会更容易 .
我最不喜欢的方法是多个场景,因为我用精灵套件和数学来表达一切都不是那么好 .

第一种方法是否可行?如果有的话,任何建议都会很棒 . 如果不是这样做的推荐方法是什么?

1 回答

  • 0

    在方法1中,如果你的MainViewController是一个UINavigationController,你应该没有问题推送和弹出你需要的任何其他ViewControllers .

    例如在GameViewController中:

    self.navigationController!.popViewController(animated: true)
    

相关问题