WEBVTT 00:00:01.532 --> 00:00:03.479 Continuons. 00:00:03.744 --> 00:00:05.683 La prochaine étape est 00:00:05.683 --> 00:00:07.824 d'écrire notre classe pour le script «AnswerData» 00:00:08.803 --> 00:00:12.024 elle y contiendra les données de toutes nos réponses. 00:00:12.526 --> 00:00:15.021 Double-cliquez, le script s'ouvre. 00:00:15.782 --> 00:00:20.336 Et pour ce script j'utiliserez "MonoDevelop". 00:00:20.569 --> 00:00:22.120 Puis je cite mes notes ici 00:00:22.441 --> 00:00:25.109 Maximisons l'espace de la fenêtre... 00:00:25.295 --> 00:00:26.415 Nous verrons mieux à l'écran 00:00:26.630 --> 00:00:27.379 Ok. 00:00:27.573 --> 00:00:28.053 Donc, 00:00:28.251 --> 00:00:30.022 Nous allons créer une série 00:00:30.125 --> 00:00:32.110 de petites classes qui ne sont pas de type «MonoBehaviour» 00:00:32.610 --> 00:00:35.477 Il s'agira de pures classes c# 00:00:35.630 --> 00:00:39.647 Et elles utiliseront: "[System.Serializable]" 00:00:39.917 --> 00:00:40.982 En fait, 00:00:41.164 --> 00:00:41.979 La raison pour laquelle nous 00:00:42.219 --> 00:00:42.791 utilisons ceci, 00:00:42.955 --> 00:00:44.581 est pour que nous puissions les modifier 00:00:44.818 --> 00:00:46.250 et détruire leurs valeurs 00:00:46.426 --> 00:00:47.426 en utilisant "l'inspector" 00:00:47.554 --> 00:00:48.792 dans l'éditeur «Unity». ("Unity Editor") 00:00:48.931 --> 00:00:50.714 Alors, elles n'utiliseront pas 00:00:50.862 --> 00:00:51.810 de fonctions 00:00:51.928 --> 00:00:53.997 Nous allons donc supprimer "Start" et "Update puis 00:00:54.302 --> 00:00:56.900 cette classe contiendra uniquement que deux variables. 00:00:57.048 --> 00:00:59.594 D'abord, nous aurons besoin d'un "Public string" 00:00:59.746 --> 00:01:01.125 que nous nommerons: «answerText» 00:01:01.295 --> 00:01:04.751 Ce sera le "string" qui contiendra le texte de notre réponse. 00:01:04.932 --> 00:01:08.575 Qu'il s'agisse de: Oui, Non, Vrai, Faux, etc 00:01:08.741 --> 00:01:12.052 Ensuite nous écrirons un "public boolean" 00:01:12.182 --> 00:01:13.837 que nous appelons: "isCorrect". 00:01:13.931 --> 00:01:16.034 Et ceci contiendra l'information de la réponse 00:01:16.172 --> 00:01:19.770 si elle est réponse est bonne ou non ainsi que la question elle-même. 00:01:19.884 --> 00:01:23.010 C'est tout ce dont nous aurons 00:01:23.080 --> 00:01:23.930 besoin pour cette classe, 00:01:24.200 --> 00:01:25.930 donc fermons cette dernière. 00:01:26.073 --> 00:01:27.166 Retournons à «Unity» 00:01:27.366 --> 00:01:28.397 Et nous allons créer notre 00:01:28.449 --> 00:01:29.210 prochaine classe 00:01:29.240 --> 00:01:30.158 qui sera 00:01:30.314 --> 00:01:32.313 note classe nommée: «QuestionData». 00:01:32.590 --> 00:01:36.029 Allons créer un nouveau C# Script et nommons-le 00:01:36.779 --> 00:01:37.810 «QuestionData» 00:01:39.281 --> 00:01:40.536 Ce script servira d'éditeur 00:01:40.819 --> 00:01:43.893 Encore une fois, Ce ne sera pas de type «MonoBehaviour» 00:01:44.073 --> 00:01:46.040 Nous n'utiliserons donc pas «Start» ni «Update». 00:01:46.242 --> 00:01:48.615 Mais nous utiliserons: 00:01:48.820 --> 00:01:52.816 "[System.Serializable]" 00:01:53.129 --> 00:01:54.424 Dans «QuestionData», 00:01:54.690 --> 00:01:56.485 nous aurons besoin d'un "public string" 00:01:56.689 --> 00:01:58.528 pour notre "questionText" (le texte de notre queston) 00:01:58.754 --> 00:02:01.922 et nous utiliserons un "public array" 00:02:02.140 --> 00:02:04.017 contenant notre «AnswerData» 00:02:04.226 --> 00:02:05.407 appelé: «answers». 00:02:05.567 --> 00:02:06.526 Donc, chaque question 00:02:06.718 --> 00:02:08.644 contiendra un nombre de réponses 00:02:08.979 --> 00:02:11.874 que nous associerons a celles-ci, 00:02:11.874 --> 00:02:15.561 elles seront gardées dans nos classes: «AnswerData» que nous venons tout juste de créer. 00:02:15.561 --> 00:02:19.310 Et chaque tour ("Round") 00:02:19.310 --> 00:02:20.884 contiendra une série de questions. 00:02:20.884 --> 00:02:24.028 Donc, la prochaine "classe" que nous allons créer 00:02:24.028 --> 00:02:26.044 Retournons à «Unity» 00:02:26.044 --> 00:02:27.975 Créer un script C# 00:02:27.975 --> 00:02:28.653 Celui-ci sera nommé: 00:02:28.653 --> 00:02:31.966 «RoundData». 00:02:31.966 --> 00:02:34.550 Et tel que «QuestionData» et «AnswerData», 00:02:34.550 --> 00:02:41.523 ce script sera lui aussi "Serializable" 00:02:41.523 --> 00:02:43.319 Ne sera pas non plus de type «MonoBehaviour» 00:02:43.319 --> 00:02:46.167 Donc n'utilisera pas les fonctions «Start» et «Update», 00:02:46.167 --> 00:02:49.367 et celui-ci contiendra quatre variables. 00:02:49.367 --> 00:02:51.747 Le premier est un "string" que nous nommons: 00:02:51.747 --> 00:02:54.570 «name», pour le nom de notre "Round", 00:02:54.570 --> 00:02:58.219 Le second sera un "integer", que nous appelons: 00:02:58.219 --> 00:02:59.653 «timeLimitInSeconds» 00:02:59.653 --> 00:03:04.892 Donc, combien de secondes données aura le joueur pour terminer ce "Round"; 00:03:04.892 --> 00:03:07.459 Le troisième sera un "public int" 00:03:07.459 --> 00:03:13.879 appelé: "pointsAddedForCorrectAnswers" (points gagnés pour bonnes réponses) 00:03:13.879 --> 00:03:18.589 Ceci servira à calculer combien de points vous obtiendrai par bonnes réponses. 00:03:18.589 --> 00:03:19.593 Finallement, 00:03:19.593 --> 00:03:21.042 Nous aurons besoin d'un autre 00:03:21.042 --> 00:03:24.172 "public «Array» de type "QuestionData" ("public QuestionData[] question;") 00:03:24.172 --> 00:03:25.508 appelé: «questions». 00:03:25.508 --> 00:03:29.661 Donc, chaque "Round" contiendra un certain nombre de questions, 00:03:29.661 --> 00:03:32.386 puis chaque question contiendra un certain nombre de réponses. 00:03:32.386 --> 00:03:36.480 en utilisant ces variables de type «public "arrays" [ ] » 00:03:36.480 --> 00:03:38.563 Enregistrons le tout. 00:03:38.563 --> 00:03:41.516 Puis maintenant, 00:03:41.516 --> 00:03:48.059 Nous pouvons revenir et remplir notre classe «DataController» qui devra gérer 00:03:48.059 --> 00:03:49.717 toutes ces données. 00:03:49.717 --> 00:03:52.401 Alors, ouvrons ce dernier.. 00:03:52.401 --> 00:03:53.539 Et celui-ci, cette fois 00:03:53.539 --> 00:03:54.899 s'agira d'un script de type "MonoBehaviour" 00:03:54.899 --> 00:03:56.510 puisqu'il est attaché à notre 00:03:56.510 --> 00:04:04.584 "DataController GameObject" et celui-ci devra utiliser 00:04:05.284 --> 00:04:07.968 "UnityEngine.SceneManagement". 00:04:08.109 --> 00:04:10.823 C'est pourquoi nous devons écrire Ici-haut dans le script: 00:04:11.073 --> 00:04:12.904 « using UnityEngine.SceneManagement; » 00:04:13.074 --> 00:04:16.161 pour qu'ainsi, nous puissions charger nos scènes dans notre jeu. 00:04:16.966 --> 00:04:21.901 Par la suite, Nous ajouterons 00:04:21.901 --> 00:04:26.764 un "public «Array» ( [ ] ) de type "RoundData", 00:04:27.167 --> 00:04:31.093 que nous nommons: " public RoundData [ ] allRoundData; " 00:04:31.461 --> 00:04:33.187 Donc, un peu plus tard, 00:04:33.187 --> 00:04:35.165 nous pourrons rallonger le jeu Et y insérer plusieurs autres «Round», 00:04:35.165 --> 00:04:37.720 Mais pour l'instant nous n'en aurons qu'un seul et unique. 00:04:37.720 --> 00:04:40.121 Mais nous l'inscrirons ici avec un «array» [ ] 00:04:40.121 --> 00:04:43.483 pour que nous puissions le rallonger un peu plus tard dans cette session. 00:04:43.483 --> 00:04:48.902 Ensuite, nous allons configurer ce "GameObject" 00:04:48.902 --> 00:04:50.163 pour qu'il ne se détruise pas au chargement de notre jeu. 00:04:50.163 --> 00:04:51.295 (DontDestroyOnLoad) 00:04:51.295 --> 00:04:53.490 Nous allons donc faire appel a la fonction "DontDestroyOnLoad" 00:04:53.490 --> 00:04:55.825 Et poursuivre vers le "GameObject" 00:04:55.825 --> 00:04:57.198 dont le script y est attaché. 00:04:57.198 --> 00:04:58.809 Ce dont cela signifie, 00:04:58.809 --> 00:05:00.843 est que normalement lorsque nous chargeons une nouvelle scène, 00:05:00.843 --> 00:05:03.217 chaque objet dans les scènes précédentes 00:05:03.217 --> 00:05:05.454 qui ne sont plus activées, sont détruites. 00:05:05.454 --> 00:05:08.786 En configurant cet objet avec «DontDestroyOnLoad» 00:05:08.786 --> 00:05:11.649 lorsque nous ouvrons une nouvelle scène, rien ne se détruit dans la scène. 00:05:11.649 --> 00:05:13.951 La façon de le voir par l'interface de Unity, 00:05:13.951 --> 00:05:17.418 c'est en observant le seul objet qui se divise dans le jeu et qui reviendra 00:05:17.418 --> 00:05:20.677 chaque fois sous le nom de: «DontDestroyOnLoad» ; 00:05:20.937 --> 00:05:25.201 Alors, dans notre cas, Configurons ceci avec «DontDestroyOnLoad» 00:05:25.321 --> 00:05:27.202 Et ensuite nous allons écrire: 00:05:27.368 --> 00:05:31.193 SceneManagement.LoadScene 00:05:31.448 --> 00:05:36.487 puis nous allons charger le MenuScreen. 00:05:36.487 --> 00:05:38.241 Maintenant, 00:05:38.251 --> 00:05:40.275 La raison principale de ce script «DataController», 00:05:40.275 --> 00:05:45.951 est d'alimenter «RoundData» à notre «GameController» Lorsque nous arriverons à cette scène 00:05:45.951 --> 00:05:51.321 Nous allons donc déclarer une fonction «public» Pour retourner un objet de type «RoundData» 00:05:51.321 --> 00:05:58.462 que nous nommons: «GetCurrentRoundData». 00:05:58.462 --> 00:06:05.810 Et dans ce cas nous allons écrire: «return allRoundData [0]» 00:06:05.810 --> 00:06:09.864 Dans ce cas nous savons que nous aurons qu'uniquement «data» à notre roundData "0" 00:06:09.864 --> 00:06:12.521 dans notre RoundData "0" 00:06:12.521 --> 00:06:19.075 Mais si nous voulons élargir le tout un peu plus tard, nous pourrions 00:06:19.235 --> 00:06:23.017 créer un «int», pour spécifier quelle donnée nous voulons retourner, etc. 00:06:23.017 --> 00:06:23.949 Ok. 00:06:23.959 --> 00:06:29.802 C'est tous ce que nous aurons besoin pour l'instant, enregistrons le tout. 00:06:30.133 --> 00:06:31.463 Retournons à Unity. 00:06:31.726 --> 00:06:33.381 Et maintenant, 00:06:33.528 --> 00:06:37.611 Avant de pouvoir charger une des scènes que nous venons de créer, 00:06:37.770 --> 00:06:39.365 Nous avons besoin de les ajouter dans notre «Build Settings» 00:06:39.515 --> 00:06:42.607 Donc, allons à «File» et «Build Settings» 00:06:42.741 --> 00:06:45.232 Glissons d'abord notre scène nommée: «Persistent» 00:06:45.378 --> 00:06:49.121 Notre scène nommée «Persistent», sera celle qui sera chargée au départ 00:06:49.121 --> 00:06:51.251 lorsque nous démarrerons notre application 00:06:51.251 --> 00:06:57.579 et nous mènera directement à notre scène «MenuScreen». 00:06:57.579 --> 00:07:00.067 Lorsque le joueur joueras plusieurs "Round" de notre jeu, 00:07:00.067 --> 00:07:02.647 Il sera toujours automatiquement retourné à notre scène «MenuScreen» 00:07:02.647 --> 00:07:05.359 La scène «Persistent» sera toujours chargée 00:07:05.359 --> 00:07:08.104 la première fois, lorsque le jeu démarrera, 00:07:08.104 --> 00:07:21.487 Ensuite notre DataController gardera la donnée en mémoire et ne sera pas détruite 00:07:21.487 --> 00:07:23.203 Donc, 00:07:23.270 --> 00:07:25.288 Nous allons ajouter la scène «Persistent», 00:07:25.288 --> 00:07:26.674 Ensuite, la scène «MenuScreen» 00:07:26.674 --> 00:07:29.415 Et enfin, la scène «Game». 00:07:29.415 --> 00:07:30.468 Ok. 00:07:30.468 --> 00:07:32.257 Donc, maintenant elles sont disponibles 00:07:32.257 --> 00:07:33.487 Les scènes peuvent être chargées. 00:07:33.487 --> 00:07:36.676 Et on peut 00:07:36.676 --> 00:07:39.424 Enregistrer notre «DataController» 00:07:39.424 --> 00:07:41.455 Jouer. 00:07:41.455 --> 00:07:46.380 Et 00:07:46.580 --> 00:07:49.557 Ok, ça fonctionne. 00:07:49.980 --> 00:07:51.543 Elles sont trop pareilles 00:07:51.543 --> 00:07:54.713 Mettons l'arrière-plan de la «Main Camera» noir 00:07:54.713 --> 00:07:56.119 dans la scène «Menu Screen» pour que vous puissiez voir 00:07:56.215 --> 00:07:59.075 comme il faut ce qui se passe dans la scène. 00:07:59.227 --> 00:08:00.071 Donc voilà, on commence ici, 00:08:00.101 --> 00:08:01.000 Il n'y a aucune caméra et ça nous amène à 00:08:01.006 --> 00:08:02.421 une scène noire, n'est-ce pas? 00:08:02.474 --> 00:08:04.614 Donc, Ça fonctionne tel que prévu. 00:08:04.614 --> 00:08:05.822 Immédiatement, 00:08:05.822 --> 00:08:07.902 la scène «MenuScreen» démarre 00:08:07.902 --> 00:08:13.278 Et maintenant, notre «DataController» enclenche cette scène «DontDestroyOnLoad» 00:08:13.598 --> 00:08:15.711 Dont laquelle elle ne sera pas détruite. 00:08:15.885 --> 00:08:18.132 Alors, tout fonctionne tel que prévu. 00:08:18.384 --> 00:08:20.419 Donc, je vais jeter un coup d’œil rapide sur la "chat", 00:08:20.419 --> 00:08:25.343 Et voyons voir, si tout le monde se porte bien.