Quiz Game - Data Classes [2/8] Live 2016/10/31
-
0:02 - 0:03Continuons.
-
0:04 - 0:06La prochaine étape est
-
0:06 - 0:08d'écrire notre classe
pour le script «AnswerData» -
0:09 - 0:12elle y contiendra les données
de toutes nos réponses. -
0:13 - 0:15Double-cliquez,
le script s'ouvre. -
0:16 - 0:20Et pour ce script j'utiliserez
"MonoDevelop". -
0:21 - 0:22Puis je cite mes notes ici
-
0:22 - 0:25Maximisons l'espace de la fenêtre...
-
0:25 - 0:26Nous verrons mieux à l'écran
-
0:27 - 0:27Ok.
-
0:28 - 0:28Donc,
-
0:28 - 0:30Nous allons créer une série
-
0:30 - 0:32de petites classes
qui ne sont pas de type
«MonoBehaviour» -
0:33 - 0:35Il s'agira de pures
classes c# -
0:36 - 0:40Et elles utiliseront:
"[System.Serializable]" -
0:40 - 0:41En fait,
-
0:41 - 0:42La raison pour laquelle nous
-
0:42 - 0:43utilisons ceci,
-
0:43 - 0:45est pour que nous puissions
les modifier -
0:45 - 0:46et détruire leurs valeurs
-
0:46 - 0:47en utilisant "l'inspector"
-
0:48 - 0:49dans l'éditeur «Unity».
("Unity Editor") -
0:49 - 0:51Alors, elles n'utiliseront pas
-
0:51 - 0:52de fonctions
-
0:52 - 0:54Nous allons donc supprimer
"Start" et "Update puis -
0:54 - 0:57cette classe contiendra uniquement
que deux variables. -
0:57 - 1:00D'abord, nous aurons besoin
d'un "Public string" -
1:00 - 1:01que nous nommerons:
«answerText» -
1:01 - 1:05Ce sera le "string" qui contiendra
le texte de notre réponse. -
1:05 - 1:09Qu'il s'agisse de:
Oui, Non, Vrai, Faux, etc -
1:09 - 1:12Ensuite nous écrirons un
"public boolean" -
1:12 - 1:14que nous appelons:
"isCorrect". -
1:14 - 1:16Et ceci contiendra
l'information de la réponse -
1:16 - 1:20si elle est réponse est bonne ou non
ainsi que la question elle-même. -
1:20 - 1:23C'est tout ce dont nous aurons
-
1:23 - 1:24besoin pour cette classe,
-
1:24 - 1:26donc fermons cette dernière.
-
1:26 - 1:27Retournons à «Unity»
-
1:27 - 1:28Et nous allons créer notre
-
1:28 - 1:29prochaine classe
-
1:29 - 1:30qui sera
-
1:30 - 1:32note classe nommée:
«QuestionData». -
1:33 - 1:36Allons créer un nouveau
C# Script et nommons-le -
1:37 - 1:38«QuestionData»
-
1:39 - 1:41Ce script servira d'éditeur
-
1:41 - 1:44Encore une fois,
Ce ne sera pas de type «MonoBehaviour» -
1:44 - 1:46Nous n'utiliserons donc pas
«Start» ni «Update». -
1:46 - 1:49Mais nous utiliserons:
-
1:49 - 1:53"[System.Serializable]"
-
1:53 - 1:54Dans «QuestionData»,
-
1:55 - 1:56nous aurons besoin d'un
"public string" -
1:57 - 1:59pour notre "questionText"
(le texte de notre queston) -
1:59 - 2:02et nous utiliserons un
"public array" -
2:02 - 2:04contenant notre «AnswerData»
-
2:04 - 2:05appelé: «answers».
-
2:06 - 2:07Donc, chaque question
-
2:07 - 2:09contiendra un nombre de réponses
-
2:09 - 2:12que nous associerons a celles-ci,
-
2:12 - 2:16elles seront gardées dans nos classes: «AnswerData»
que nous venons tout juste de créer. -
2:16 - 2:19Et chaque tour ("Round")
-
2:19 - 2:21contiendra une série de questions.
-
2:21 - 2:24Donc, la prochaine "classe"
que nous allons créer -
2:24 - 2:26Retournons à «Unity»
-
2:26 - 2:28Créer un script C#
-
2:28 - 2:29Celui-ci sera nommé:
-
2:29 - 2:32«RoundData».
-
2:32 - 2:35Et tel que «QuestionData» et «AnswerData»,
-
2:35 - 2:42ce script sera lui aussi "Serializable"
-
2:42 - 2:43Ne sera pas non plus
de type «MonoBehaviour» -
2:43 - 2:46Donc n'utilisera pas les fonctions
«Start» et «Update», -
2:46 - 2:49et celui-ci contiendra quatre variables.
-
2:49 - 2:52Le premier est un "string"
que nous nommons: -
2:52 - 2:55«name», pour le nom de notre "Round",
-
2:55 - 2:58Le second sera un "integer",
que nous appelons: -
2:58 - 3:00«timeLimitInSeconds»
-
3:00 - 3:05Donc, combien de secondes données
aura le joueur pour terminer ce "Round"; -
3:05 - 3:07Le troisième sera un "public int"
-
3:07 - 3:14appelé: "pointsAddedForCorrectAnswers"
(points gagnés pour bonnes réponses) -
3:14 - 3:19Ceci servira à calculer combien de points
vous obtiendrai par bonnes réponses. -
3:19 - 3:20Finallement,
-
3:20 - 3:21Nous aurons besoin d'un autre
-
3:21 - 3:24"public «Array» de type "QuestionData"
("public QuestionData[] question;") -
3:24 - 3:26appelé: «questions».
-
3:26 - 3:30Donc, chaque "Round" contiendra un certain
nombre de questions, -
3:30 - 3:32puis chaque question contiendra un certain
nombre de réponses. -
3:32 - 3:36en utilisant ces variables
de type «public "arrays" [ ] » -
3:36 - 3:39Enregistrons le tout.
-
3:39 - 3:42Puis maintenant,
-
3:42 - 3:48Nous pouvons revenir et remplir notre
classe «DataController» qui devra gérer -
3:48 - 3:50toutes ces données.
-
3:50 - 3:52Alors, ouvrons ce dernier..
-
3:52 - 3:54Et celui-ci, cette fois
-
3:54 - 3:55s'agira d'un script de type "MonoBehaviour"
-
3:55 - 3:57puisqu'il est attaché à notre
-
3:57 - 4:05"DataController GameObject" et celui-ci
devra utiliser -
4:05 - 4:08"UnityEngine.SceneManagement".
-
4:08 - 4:11C'est pourquoi nous devons écrire
Ici-haut dans le script: -
4:11 - 4:13« using UnityEngine.SceneManagement; »
-
4:13 - 4:16pour qu'ainsi, nous puissions
charger nos scènes dans notre jeu. -
4:17 - 4:22Par la suite,
Nous ajouterons -
4:22 - 4:27un "public «Array» ( [ ] )
de type "RoundData", -
4:27 - 4:31que nous nommons:
" public RoundData [ ] allRoundData; " -
4:31 - 4:33Donc, un peu plus tard,
-
4:33 - 4:35nous pourrons rallonger le jeu
Et y insérer plusieurs autres «Round», -
4:35 - 4:38Mais pour l'instant nous n'en aurons
qu'un seul et unique. -
4:38 - 4:40Mais nous l'inscrirons ici avec un «array» [ ]
-
4:40 - 4:43pour que nous puissions le rallonger
un peu plus tard dans cette session. -
4:43 - 4:49Ensuite, nous allons
configurer ce "GameObject" -
4:49 - 4:50pour qu'il ne se détruise pas
au chargement de notre jeu. -
4:50 - 4:51(DontDestroyOnLoad)
-
4:51 - 4:53Nous allons donc faire appel
a la fonction "DontDestroyOnLoad" -
4:53 - 4:56Et poursuivre vers le "GameObject"
-
4:56 - 4:57dont le script y est attaché.
-
4:57 - 4:59Ce dont cela signifie,
-
4:59 - 5:01est que normalement lorsque nous
chargeons une nouvelle scène, -
5:01 - 5:03chaque objet dans les scènes précédentes
-
5:03 - 5:05qui ne sont plus activées, sont détruites.
-
5:05 - 5:09En configurant cet objet avec
«DontDestroyOnLoad» -
5:09 - 5:12lorsque nous ouvrons une nouvelle scène,
rien ne se détruit dans la scène. -
5:12 - 5:14La façon de le voir par l'interface de Unity,
-
5:14 - 5:17c'est en observant le seul objet qui
se divise dans le jeu et qui reviendra -
5:17 - 5:21chaque fois sous le nom de:
«DontDestroyOnLoad» ; -
5:21 - 5:25Alors, dans notre cas,
Configurons ceci avec «DontDestroyOnLoad» -
5:25 - 5:27Et ensuite nous allons écrire:
-
5:27 - 5:31SceneManagement.LoadScene
-
5:31 - 5:36puis nous allons charger le MenuScreen.
-
5:36 - 5:38Maintenant,
-
5:38 - 5:40La raison principale de ce script «DataController»,
-
5:40 - 5:46est d'alimenter «RoundData» à notre «GameController»
Lorsque nous arriverons à cette scène -
5:46 - 5:51Nous allons donc déclarer une fonction «public»
Pour retourner un objet de type «RoundData» -
5:51 - 5:58que nous nommons: «GetCurrentRoundData».
-
5:58 - 6:06Et dans ce cas nous allons écrire:
«return allRoundData [0]» -
6:06 - 6:10Dans ce cas nous savons que nous aurons
qu'uniquement «data» à notre roundData "0" -
6:10 - 6:13dans notre RoundData "0"
-
6:13 - 6:19Mais si nous voulons élargir le tout
un peu plus tard, nous pourrions -
6:19 - 6:23créer un «int», pour spécifier
quelle donnée nous voulons retourner, etc. -
6:23 - 6:24Ok.
-
6:24 - 6:30C'est tous ce que nous aurons
besoin pour l'instant, enregistrons le tout. -
6:30 - 6:31Retournons à Unity.
-
6:32 - 6:33Et maintenant,
-
6:34 - 6:38Avant de pouvoir charger une des scènes
que nous venons de créer, -
6:38 - 6:39Nous avons besoin de les ajouter
dans notre «Build Settings» -
6:40 - 6:43Donc, allons à «File» et «Build Settings»
-
6:43 - 6:45Glissons d'abord notre scène
nommée: «Persistent» -
6:45 - 6:49Notre scène nommée «Persistent»,
sera celle qui sera chargée au départ -
6:49 - 6:51lorsque nous démarrerons notre application
-
6:51 - 6:58et nous mènera directement
à notre scène «MenuScreen». -
6:58 - 7:00Lorsque le joueur joueras plusieurs
"Round" de notre jeu, -
7:00 - 7:03Il sera toujours automatiquement retourné
à notre scène «MenuScreen» -
7:03 - 7:05La scène «Persistent» sera toujours chargée
-
7:05 - 7:08la première fois, lorsque le jeu démarrera,
-
7:08 - 7:21Ensuite notre DataController gardera
la donnée en mémoire et ne sera pas détruite -
7:21 - 7:23Donc,
-
7:23 - 7:25Nous allons ajouter la scène «Persistent»,
-
7:25 - 7:27Ensuite, la scène «MenuScreen»
-
7:27 - 7:29Et enfin, la scène «Game».
-
7:29 - 7:30Ok.
-
7:30 - 7:32Donc, maintenant elles sont disponibles
-
7:32 - 7:33Les scènes peuvent être chargées.
-
7:33 - 7:37Et on peut
-
7:37 - 7:39Enregistrer notre «DataController»
-
7:39 - 7:41Jouer.
-
7:41 - 7:46Et
-
7:47 - 7:50Ok, ça fonctionne.
-
7:50 - 7:52Elles sont trop pareilles
-
7:52 - 7:55Mettons l'arrière-plan de la
«Main Camera» noir -
7:55 - 7:56dans la scène «Menu Screen»
pour que vous puissiez voir -
7:56 - 7:59comme il faut ce qui se passe
dans la scène. -
7:59 - 8:00Donc voilà, on commence ici,
-
8:00 - 8:01Il n'y a aucune caméra
et ça nous amène à -
8:01 - 8:02une scène noire,
n'est-ce pas? -
8:02 - 8:05Donc,
Ça fonctionne tel que prévu. -
8:05 - 8:06Immédiatement,
-
8:06 - 8:08la scène «MenuScreen» démarre
-
8:08 - 8:13Et maintenant, notre «DataController»
enclenche cette scène «DontDestroyOnLoad» -
8:14 - 8:16Dont laquelle elle ne sera pas détruite.
-
8:16 - 8:18Alors, tout fonctionne tel que prévu.
-
8:18 - 8:20Donc, je vais jeter un coup d’œil
rapide sur la "chat", -
8:20 - 8:25Et voyons voir,
si tout le monde se porte bien.
- Title:
- Quiz Game - Data Classes [2/8] Live 2016/10/31
- Description:
-
Watch this video in context on the official Unity learn pages -
http://www.unity3d.com/learn/tutorials/topics/scripting/data-classesIn this live training session we will look at creating a multiple choice quiz game. We will create the core game loop - timer, score, win and lose states. We will also show code architecture best practices - keeping data and logic separate, and how to structure a game in a way that makes it easy to maintain and extend. We will look at some of the ways we can extend this in session two.
- Video Language:
- English
- Duration:
- 08:27
marc cournoyer edited English subtitles for Quiz Game - Data Classes [2/8] Live 2016/10/31 | ||
marc cournoyer edited English subtitles for Quiz Game - Data Classes [2/8] Live 2016/10/31 | ||
marc cournoyer edited English subtitles for Quiz Game - Data Classes [2/8] Live 2016/10/31 |