在Swift

时间:2017-10-12 05:24:37

标签: ios swift uiviewcontroller skscene

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

  1. MainViewController - > GameViewController(持有SKScene)
  2. GameViewController(持有SKScene) - 使用协议
  3. 0.5两个SKScenes /两个swift自定义类。

    第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()
    

    不幸的是,我无法找到合适的功能来解雇它。

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

    第2名

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

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

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

    数字0.5

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

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

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

1 个答案:

答案 0 :(得分:0)

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

e.g。在GameViewController中:

self.navigationController!.popViewController(animated: true)