2

コンテキスト

この質問は、Swift: SKSpriteKit, using Storyboards, UIViewController and UIButton to set in game parameters?に関連し、同じM.W.E.を使用します。 (下のリンク)。Swift:StoryBoardsとUIViewControllerを使用してGameSceneで条件が満たされた後、メインメニューに戻りますか?

、我々は以下を参照してください。Main.storyboardを見てみる: enter image description here

このストーリーボードは1がクリックすることにより、左から右に進行することが可能だろうが:

遊び - >(ハード/簡単) - > >MyUIViewController - - >GameViewController

と右からのGameScene

UIViewController最後にUIViewControllerUIButtonをクリックして「スコア」と記載したUILabelをクリックすると、GameViewControllerから最後のUIViewControllerに「UILabel」となる方法がありません。私は最後の最後UIViewControllerからGameSceneから(例えば、スコア)と遷移いくつかの情報を渡すことができますどのように

GameScene中に発生する特定のイベントを考えると

質問

は、ユーザが再び上でゲームを始めることができるということ。 GameViewControllerのすべてを削除するだけでなく、到達不能な古いインスタンスの GameSceneで終わるのではありません。

特定の条件については、M.W.E.の紫色のスプライトをタップします。情報については、スプライトが押されるまでの時間のような些細なもの、あるいは単に乱数であってもかまわない。

最小実施例は

Stack Overflow SKSpriteKit

私の答えhere - と、ここStackOverflow SKSpriteKit with Menuを実装 - これは明らかに可能であることを示しているが、SKView秒にすべてを委ねるのではなくstoryboardを使用することによって。可能であれば、このハイブリッドの使用に関連する回答はstoryboard - SKViewとなり、GameSceneUIViewControllerとなります。

+0

デリゲートパターンに精通していますか?子ビューが親と通信するのは通常の方法です。この[SOの投稿](http://stackoverflow.com/questions/39561177/how-can-i-indicate-a-view-which-has-created-with-uikit-from-a-skscene/39564948#39564948)基本的なアイデアを示し、巻き戻しシーケを実行します。デリゲートプロトコルを拡張してスコアプロパティを含めることができるため、シーンが値を変更したときにViewControllerに通知することができます。 –

+0

@MarkBrownsword Nope。私はそうではありません、あなたはこのM.W.Eで説明することができますか?:https://github.com/SumNeuron/StackOverflow-SKSpriteKit-with-Menu – SumNeuron

答えて

1

あなたは、現在のシーンを保存するためにあなたの次のシーンのuserDataインスタンスプロパティを使用するようなものでした:

nextScene.userData = NSMutableDictionary() 
nextScene.userData?.setObject(actualScore, forKey: "actualScore" as NSCopying) 

、あなたが次のシーンにあるときは、前のシーンでこのNSMutableDictionaryに尋ねることができます次のように:

if let actualScore = self.userData?.value(forKey: "actualScore") { 
    print("well done!, the score was: \(actualScore)") 
} 
関連する問題