Continuons.
La prochaine étape est
d'écrire notre classe pour le script «AnswerData»
elle y contiendra les données de toutes nos réponses.
Double-cliquez, le script s'ouvre.
Et pour ce script j'utiliserez "MonoDevelop".
Puis je cite mes notes ici
Maximisons l'espace de la fenêtre...
Nous verrons mieux à l'écran
Ok.
Donc,
Nous allons créer une série
de petites classes qui ne sont pas de type «MonoBehaviour»
Il s'agira de pures classes c#
Et elles utiliseront: "[System.Serializable]"
En fait,
La raison pour laquelle nous
utilisons ceci,
est pour que nous puissions les modifier
et détruire leurs valeurs
en utilisant "l'inspector"
dans l'éditeur «Unity». ("Unity Editor")
Alors, elles n'utiliseront pas
de fonctions
Nous allons donc supprimer "Start" et "Update puis
cette classe contiendra uniquement que deux variables.
D'abord, nous aurons besoin d'un "Public string"
que nous nommerons: «answerText»
Ce sera le "string" qui contiendra le texte de notre réponse.
Qu'il s'agisse de: Oui, Non, Vrai, Faux, etc
Ensuite nous écrirons un "public boolean"
que nous appelons: "isCorrect".
Et ceci contiendra l'information de la réponse
si elle est réponse est bonne ou non ainsi que la question elle-même.
C'est tout ce dont nous aurons
besoin pour cette classe,
donc fermons cette dernière.
Retournons à «Unity»
Et nous allons créer notre
prochaine classe
qui sera
note classe nommée: «QuestionData».
Allons créer un nouveau C# Script et nommons-le
«QuestionData»
Ce script servira d'éditeur
Encore une fois, Ce ne sera pas de type «MonoBehaviour»
Nous n'utiliserons donc pas «Start» ni «Update».
Mais nous utiliserons:
"[System.Serializable]"
Dans «QuestionData»,
nous aurons besoin d'un "public string"
pour notre "questionText" (le texte de notre queston)
et nous utiliserons un "public array"
contenant notre «AnswerData»
appelé: «answers».
Donc, chaque question
contiendra un nombre de réponses
que nous associerons a celles-ci,
elles seront gardées dans nos classes: «AnswerData» que nous venons tout juste de créer.
Et chaque tour ("Round")
contiendra une série de questions.
Donc, la prochaine "classe" que nous allons créer
Retournons à «Unity»
Créer un script C#
Celui-ci sera nommé:
«RoundData».
Et tel que «QuestionData» et «AnswerData»,
ce script sera lui aussi "Serializable"
Ne sera pas non plus de type «MonoBehaviour»
Donc n'utilisera pas les fonctions «Start» et «Update»,
et celui-ci contiendra quatre variables.
Le premier est un "string" que nous nommons:
«name», pour le nom de notre "Round",
Le second sera un "integer", que nous appelons:
«timeLimitInSeconds»
Donc, combien de secondes données aura le joueur pour terminer ce "Round";
Le troisième sera un "public int"
appelé: "pointsAddedForCorrectAnswers" (points gagnés pour bonnes réponses)
Ceci servira à calculer combien de points vous obtiendrai par bonnes réponses.
Finallement,
Nous aurons besoin d'un autre
"public «Array» de type "QuestionData" ("public QuestionData[] question;")
appelé: «questions».
Donc, chaque "Round" contiendra un certain nombre de questions,
puis chaque question contiendra un certain nombre de réponses.
en utilisant ces variables de type «public "arrays" [ ] »
Enregistrons le tout.
Puis maintenant,
Nous pouvons revenir et remplir notre classe «DataController» qui devra gérer
toutes ces données.
Alors, ouvrons ce dernier..
Et celui-ci, cette fois
s'agira d'un script de type "MonoBehaviour"
puisqu'il est attaché à notre
"DataController GameObject" et celui-ci devra utiliser
"UnityEngine.SceneManagement".
C'est pourquoi nous devons écrire Ici-haut dans le script:
« using UnityEngine.SceneManagement; »
pour qu'ainsi, nous puissions charger nos scènes dans notre jeu.
Par la suite, Nous ajouterons
un "public «Array» ( [ ] ) de type "RoundData",
que nous nommons: " public RoundData [ ] allRoundData; "
Donc, un peu plus tard,
nous pourrons rallonger le jeu Et y insérer plusieurs autres «Round»,
Mais pour l'instant nous n'en aurons qu'un seul et unique.
Mais nous l'inscrirons ici avec un «array» [ ]
pour que nous puissions le rallonger un peu plus tard dans cette session.
Ensuite, nous allons configurer ce "GameObject"
pour qu'il ne se détruise pas au chargement de notre jeu.
(DontDestroyOnLoad)
Nous allons donc faire appel a la fonction "DontDestroyOnLoad"
Et poursuivre vers le "GameObject"
dont le script y est attaché.
Ce dont cela signifie,
est que normalement lorsque nous chargeons une nouvelle scène,
chaque objet dans les scènes précédentes
qui ne sont plus activées, sont détruites.
En configurant cet objet avec «DontDestroyOnLoad»
lorsque nous ouvrons une nouvelle scène, rien ne se détruit dans la scène.
La façon de le voir par l'interface de Unity,
c'est en observant le seul objet qui se divise dans le jeu et qui reviendra
chaque fois sous le nom de: «DontDestroyOnLoad» ;
Alors, dans notre cas, Configurons ceci avec «DontDestroyOnLoad»
Et ensuite nous allons écrire:
SceneManagement.LoadScene
puis nous allons charger le MenuScreen.
Maintenant,
La raison principale de ce script «DataController»,
est d'alimenter «RoundData» à notre «GameController» Lorsque nous arriverons à cette scène
Nous allons donc déclarer une fonction «public» Pour retourner un objet de type «RoundData»
que nous nommons: «GetCurrentRoundData».
Et dans ce cas nous allons écrire: «return allRoundData [0]»
Dans ce cas nous savons que nous aurons qu'uniquement «data» à notre roundData "0"
dans notre RoundData "0"
Mais si nous voulons élargir le tout un peu plus tard, nous pourrions
créer un «int», pour spécifier quelle donnée nous voulons retourner, etc.
Ok.
C'est tous ce que nous aurons besoin pour l'instant, enregistrons le tout.
Retournons à Unity.
Et maintenant,
Avant de pouvoir charger une des scènes que nous venons de créer,
Nous avons besoin de les ajouter dans notre «Build Settings»
Donc, allons à «File» et «Build Settings»
Glissons d'abord notre scène nommée: «Persistent»
Notre scène nommée «Persistent», sera celle qui sera chargée au départ
lorsque nous démarrerons notre application
et nous mènera directement à notre scène «MenuScreen».
Lorsque le joueur joueras plusieurs "Round" de notre jeu,
Il sera toujours automatiquement retourné à notre scène «MenuScreen»
La scène «Persistent» sera toujours chargée
la première fois, lorsque le jeu démarrera,
Ensuite notre DataController gardera la donnée en mémoire et ne sera pas détruite
Donc,
Nous allons ajouter la scène «Persistent»,
Ensuite, la scène «MenuScreen»
Et enfin, la scène «Game».
Ok.
Donc, maintenant elles sont disponibles
Les scènes peuvent être chargées.
Et on peut
Enregistrer notre «DataController»
Jouer.
Et
Ok, ça fonctionne.
Elles sont trop pareilles
Mettons l'arrière-plan de la «Main Camera» noir
dans la scène «Menu Screen» pour que vous puissiez voir
comme il faut ce qui se passe dans la scène.
Donc voilà, on commence ici,
Il n'y a aucune caméra et ça nous amène à
une scène noire, n'est-ce pas?
Donc, Ça fonctionne tel que prévu.
Immédiatement,
la scène «MenuScreen» démarre
Et maintenant, notre «DataController» enclenche cette scène «DontDestroyOnLoad»
Dont laquelle elle ne sera pas détruite.
Alors, tout fonctionne tel que prévu.
Donc, je vais jeter un coup d’œil rapide sur la "chat",
Et voyons voir, si tout le monde se porte bien.