2 votes

Swift : retour au menu principal après une condition dans une scène de jeu en utilisant des StoryBoards et des UIViewControllers ?

Contexte

Cette question est liée à Swift : SKSpriteKit, utilisation de Storyboards, UIViewController et UIButton pour définir les paramètres du jeu ? et utilise le même M.W.E. (lien ci-dessous).

En jetant un coup d'œil sur la Main.storyboard nous constatons ce qui suit : enter image description here

Alors que ce storyboard permettrait de progresser de gauche à droite en cliquant :

jouer -> (facile/difficile) -> GameScene

UIViewController -> MyUIViewController -> GameViewController

et de droite à gauche en cliquant sur le bouton UIButton sur le dernier UIViewController avec le UILabel en indiquant "Score", il n'y a pas de moyen d'aller de l'un à l'autre. GameViewController jusqu'au dernier UIViewController avec le "Score" UILabel .

Question

Compte tenu d'un certain événement survenu au cours de la GameScene Comment puis-je transmettre une information (par exemple un score) de la page d'accueil à la page d'accueil ? GameScene et transition vers la dernière dernière UIViewController afin que l'utilisateur puisse recommencer le jeu. En plus de supprimer tout ce qui se trouve dans le GameViewController afin de ne pas se retrouver avec d'anciennes instances inaccessibles de l'application. GameScene .

Pour la condition, il s'agit d'appuyer sur le sprite violet dans le M.W.E. Pour l'information, il s'agit de quelque chose de trivial comme le temps écoulé jusqu'à ce que le sprite ait été appuyé, ou même simplement un nombre aléatoire.

Exemple de travail minimum

Stack Overflow SKSpriteKit

Note

Ma réponse aquí - et mis en œuvre ici StackOverflow SKSpriteKit avec Menu - montre que c'est clairement possible, mais en reléguant tout à l'intérieur de l'Union européenne. SKView plutôt que d'utiliser un storyboard . Dans la mesure du possible, veuillez donc conserver les réponses relatives à l'utilisation de cet hybride. storyboard - SKView et comment faire en sorte que l'approche de la GameScene appeler le "Score"- UIViewController .

1voto

mrhevor Points 18

Vous pouvez utiliser le userData de votre prochaine scène pour stocker la scène actuelle, quelque chose comme :

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

et lorsque vous êtes dans la scène suivante, vous pouvez demander à ce NSMutableDictionary qui est le personnage de la scène précédente :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X