2017-10-12 63 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)