下面我有两种不同的方法来使用视图控制器和SKScene设置我的游戏。这一半我没有花太多时间,因为我希望这些其他解决方案之一能够奏效。 下面更详细地描述:
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这样的东西。
我更喜欢使用两个视图控制器的第一种方式,因为我认为使用一些视图控制器可以更轻松地完成游戏的布局。
我最不喜欢的方法是多个场景,因为我用精灵套件和数学来表达一切都不是那么好。
第一种方法是否可行?如果有的话,任何建议都会很棒。如果不是这样做的推荐方法是什么?
答案 0 :(得分:0)
在方法1中,如果你的MainViewController是一个UINavigationController,你应该没有问题推送和弹出你需要的任何其他ViewControllers。
e.g。在GameViewController中:
self.navigationController!.popViewController(animated: true)