2017-10-12 67 views
0

下面我有两种不同的方法来使用视图控制器和SKScene设置我的游戏。我没有花费太多时间,因为我希望其他解决方案中的其中一种能够发挥作用。在下面更详细描述 是:在Swift中使用多个ViewControllers和SKScene

  1. MainViewController - > GameViewController(保持SKScene)
  2. GameViewController(保持SKScene) - 使用协议

0.5二SKScenes /双迅速的自定义类。

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

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

例如在GameViewController中:

self.navigationController!.popViewController(animated: true)