-
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.