Unity : Découplage des données et des comportements à l'aide d'un modèle de conception modèle-vue-contrôleur. | Fred Moreau | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Unity : Découplage des données et des comportements à l'aide d'un modèle de conception modèle-vue-contrôleur.

teacher avatar Fred Moreau, Unity Instructor, Agile Coach

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Aperçu du cours

      0:35

    • 2.

      Un aperçu des motifs de conception

      6:37

    • 3.

      Mocking la vue de piste

      13:29

    • 4.

      Enregistrer des éléments UI comme Prefabs

      3:11

    • 5.

      Créer les données de piste (modèle)

      5:42

    • 6.

      Separating les données des données du composant

      4:13

    • 7.

      Faire des données un de manière un actif personnalisé

      4:18

    • 8.

      Créer des données aléatoires (pour les tests)

      10:54

    • 9.

      Édition des données avec un inspecteur de propriété personnalisée.

      17:17

    • 10.

      Configurer le composant de vue Track

      7:21

    • 11.

      Lire les données et remplir la vue

      6:40

    • 12.

      Animer le processus de détection de la piste

      4:41

    • 13.

      Gérer des entrées personnalisées à l'aide de codes clés

      11:35

    • 14.

      Mettre en œuvre les techniques de tempo de Gameplay

      6:46

    • 15.

      Metter des commandes d'entrée de graphiques.

      6:12

    • 16.

      Sync'ing le suivi avec la piste Controller.

      10:09

    • 17.

      Ajouter les commentaires visuels de Gameplay.

      12:36

    • 18.

      Rétrospective du cours

      2:10

    • 19.

      Refactoring.

      6:00

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

529

apprenants

2

projets

À propos de ce cours

Cette formation est la première d'une série d'une série d'entraînement sur l'unité, focalise le travail en équipe entre les designers, les artistes et les programmeurs.

Chaque formation dans cette série vous abordera un sujet spécifique de l'industrie de jeu.
Ce cours abordera les modèles de conception, et en particulier le motif de contrôleur de modèle et la manière de le mettre en place avec Unity.

Nous allons commencer à partir de zéro pour créer un héros de Guitar ou Tap Tap Revenge comme game.We'll
allons aborder la structure des données et la mécanique de la mécanique de la gameplay, qui superposer la conception et la programmation, et les graphiques de données qui vous posent des graphes graphiques et de la fabrication à la programmation

Nous commencerons par un aperçu rapide des motifs connus (MVC, MVVM, MVP),
ensuite nous allons mock la vue avec des outils Unity UI avant de travailler sur l'architecture de jeu.

Nous concevrons la structure de données de suivi (modèle), puis nous allons l'afficher et les modifier avec un Inspecteur personnaliser, et générer au hasard des données à suivre avec aléatoire et avec lesquels travailler. Nous verrons les données réutilisables avec le cours ScriptableObject.

Nous travaillerons ensuite sur la vue Suivante, le remplirons avec des objets de prefabs UI et l'animer.

Nous travaillerons ensuite sur le contrôleur GamePlay, qui traitera les entrées du joueur et tous les mécaniques de la Game Play, et vous mettra à jour la vue pour que le joueur knows son son fait.

À à la fin du cours, les artistes s'identifieront mieux ce qu'ils peuvent faire avec les composants UI et les programmeurs et concepteurs sauront comment ils peuvent créer des données de jeu personnalisées, directement par l'éditeur, pour l'utiliser au à l'exécution.

Rencontrez votre enseignant·e

Teacher Profile Image

Fred Moreau

Unity Instructor, Agile Coach

Enseignant·e

With a strong technical expertise and a taste for design, I've had the opportunity to lead teams of creative people through development of innovative projects.

I'm passionate about learning and training, I started giving training early and have been involved in training certification programs. When you work in this industry, sharing your knowledge is not only a duty, it's the opportunity to learn even more.

I'm a self-taught developer myself. I work with Unity since 2011, and was very lucky to meet with mentors who taught me a great deal about OOP. That's a lot to learn about when your background is not in engineering, though, I figured that if I could do it, anyone can.

Voir le profil complet

Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Aperçu du cours: dans cette formation, nous allons aborder les modèles de conception et en particulier le modèle de contrôleur de vue modèle, qui est largement utilisé dans les hommes de loi Aptiva et peut être très utile dans le développement de jeux pour nous allons commencer à marquer l'U. Y en utilisant les outils unitaires y. Ensuite, nous allons toucher à l'objet inscrutable, ce qui nous permet de l'éditeur indépendant de données de sécurité et de l'utiliser à chaque fois. Et puis nous allons toucher la manette de jeu pour prendre les entrées du joueur et envoyer des commentaires au joueur pour lui faire savoir si Blade bonne ou mauvaise pour cela, nous allons utiliser une vengeance de robinet ou un jeu de héros de guitare. Donc avec cette nouvelle opportunité Aito et je vous verrai dans la prochaine vidéo 2. Un aperçu des motifs de conception: Au cours de ce premier chapitre, nous allons aborder le contrôleur de vue du modèle, qui sera la base pour les prochains chapitres de ce projet de jeu, qui va être une sorte de héros de guitare ou de jeu de la vengeance du robinet où le joueur doit jouer différentes entrées et rythme avec la musique. Et donc ce que Ah, nous pouvons voir ici, c'est que le gameplay est un gameplay très centré sur les données. Donc ça veut dire que nous allons devoir gérer les données pour les pistes. Et donc on va devoir Ah, Thor, les données. Et puis nous allons aussi avoir Teoh pour utiliser ces données et dans ce chapitre, travailler sur la manipulation des données, créer des données de base. Et ce que nous voyons ici, c'est que Ah, nous avons une série d'entrées attendues sont affichées est Colin et donc nous allons rendre très simple pour l'instant où nous avons juste une entrée par lui une dans. Mais tel est haut, bas, gauche, gauche, droite Puis les filles déplacées vers le bas avec un battement par minute périmètre dans le lecteur, Miss a appuyé sur les boutons et riven avec la musique et les représentations d'entrée vont changer pour refléter l'action des joueurs Tels que Ai-je manqué ? Est-ce que j'ai bien compris ? Est-ce que je me suis trompé ? Le joueur doit savoir s'il est joué correctement, et s'il est joué, il doit probablement obtenir des récompenses. Si vous remplacez probablement. Alors donnons un bon aperçu de ce que nous allons toucher sur le chapitre. Nous allons avoir une vue rapide des modèles connus, qui sont les vues d'envie, qui est le contrôleur de vue du modèle ou le modèle M V M pour Model View et le présentateur M V P pour Model View, qui sont conçus modèles. Ensuite, nous verrons comment affaiblir rapidement moquer la vue dans l'unité, utilisant l'outil U Y afin que nous puissions nous donner un assez bon j'idée assez bonnes représentations de ce que la vue va être, et ensuite comment les données vont être comme avec elle. Ensuite, nous allons aborder le modèle de piste. Donc, on va toucher à la structure des données. Nous allons faire en sorte que les données soient indépendantes du gameplay que nous allons toucher sur les données réutilisables et toucher sur la civilisation que nous allons toucher aussi dans la génération données simples, Randomly dit que nous n'avons pas à créer notre propres données au tout début du développement. Dans ont été à toucher sur l'affichage des données dans l'édition ainsi. Ensuite, nous allons aborder la vue de la piste, qui représente la piste dans la vue du jeu, utilisant des modèles de discipline que nous allons référencer. Et puis nous allons remplir la vue avec ces sujets préfabriqués. Et puis nous allons animer la vue. Et plus tard, nous allons toucher le contrôleur de gameplay, en prenant les entrées du joueur gérant toutes les mécaniques de jeu allaient toucher le modèle singleton, qui perd d'accéder à une manette ou en excès d'un composant de jeu où qu'il se trouve dans la scène sans avoir à le référencer manuellement. Et puis nous allons toucher à la vue sur la plage est ce que nous voulons faire est de mettre à jour les vues quand le joueur joue, a dit que le joueur sait s'il a joué juste autour. Commençons donc par un aperçu rapide du contrôleur de vue du modèle. Le contrôleur de vue du modèle nous dit que nous séparons par opposition à une architecture compétente , une commune. C' est autosuffisant, donc la confiance va marcher les uns avec les autres. Mais il y a autosuffisant. Très souvent, un compétent a ses propres données. Il a des hits sur la représentation des données, et il gère les entrées du joueur dans une bande innée donc c'est vieux, autosuffisant dans un design. Mieux, nous avons tendance à séparer les choses afin qu'elles soient plus modulaires afin d'affaiblir les choses de changement. L' idée d'un contrôleur de vue de modèle est que vous pouvez échanger un contrôleur rapidement et très facilement sans avoir à changer un autre composant de l'écosystème. Dans ce modèle, ce que nous voyons est que nous avons un modèle, qui est les données elles-mêmes, et à l'autre extrémité il y a l'utilisateur, et entre les deux il y a un contrôleur et une vue. La vue est va prendre. Le modèle prendra les données du modèle et présentera les données à l'utilisateur sous une forme donnée. Et puis le contrôleur, d'autre part, prendra l'entrée de l'utilisateur et modifiera les données. Et donc chaque fois que les données changent, puis la vue des dates et ainsi de suite et ainsi de suite. Ceci est le contrôleur de vue du modèle. Il s'agit d'un modèle de conception largement utilisé dans le développement de l'APS. Maintenant, il y a quelques autres modèles qui sont très similaires à ce patter de contrôleur de vue de modèle et tel est le modèle de vue de modèle où ce que vous pouvez voir ici est qu'il y a une couche d'abstraction différente entre le modèle et la vue où vous avez un modèle de vue, ce qui est correct. Nous connaissons ces données et nous connaissons le point de vue. Mais ce que nous voulons faire ici, c'est nous assurer que vous pouvez avoir une vision qui soit capable s'adapter à un modèle. Donc, vous pourriez avoir, comme une vue très généreuse, et ainsi de vous pourriez potentiellement afficher différents types de données. Et c'est l'idée du modèle de vue Model View, qui est également utilisé dans le développement de jeux. Parfois, un autre modèle de conception, qui est encore très similaire à celui-ci, est le présentateur de vue du milieu, le présentateur de vue du modèle, par opposition au contrôleur de vue du modèle d'origine. Vous pouvez voir que le présentateur est entre la fin du modèle de vous, donc ce n'est pas la vue qui date vraiment sur le modèle, mais la vue se met à jour en fonction du présentateur, le prisonnier est le gestionnaire global, et il gère les données et donne la vue. Il lui donne les données à afficher, et la vue affichera ensuite les données, et il prendra les entrées de l'utilisateur. Donc, cela étant dit, ne sont que des modèles conçus. Ils ne sont pas juste comme quelque chose que vous devez suivre très précisément. C' est quelque chose que vous pouvez jouer avec et changer est que vous avez besoin, bien qu'il soit généralement bon de connaître ces modèles de conception, probablement, et de les comprendre de sorte que chaque fois que vous voulez créer vos propres anciens combattants de conception, alors vous ne finissez pas par recréer un modèle qui est déjà une chute dans les pièges de modèles de conception inconnus. Donc, avec tout ce carburant relayé, il est temps de s'entraîner. Et c'est ce que nous allons faire dans la prochaine vidéo 3. Mocking la vue de piste: Donc, comme nous allons commencer à travailler sur ce modèle de contrôleur de vue modèle, nous allons devoir ah, travailler dans les trois composants en même temps. Mais nous devons commencer par l'un d'eux. Et il y aura toujours des gens qui, comme Teoh, commencent par la fin. Et, Et, habitude, j'aime bien Teoh. Commencez par la vue, qui est plus sur ce que la vue va ressembler, euh, euh, à la fin, ce que c'est et qui est venu à fonctionner et comment ça va. Teoh, comporte-toi. Donc j'aime me moquer l'autre vue d'abord. Là. Je parle juste de Ah, nouveau, n'est-ce pas ? Pourquoi, Trudy, projet avec unité Et je viens d'ajouter, Ah, une simple toile ici. Ah, un genre de studio. Donc ce que nous allons faire ici c'est commencer Mokin à la vue et ensuite nous allons commencer à travailler sur le modèle, euh, juste après. Donc, ce que je vais faire ici est venir dans le panneau de création et je vais aller dans le que vous voulez et demandé de créer un nouveau canevas. Je crée deux toiles parce que la toile que j'ai déjà est une toile à D et c'est une superposition d' écrans paie et celui que je veux Teoh Handle va maintenant être une toile trois d Donc et je vais vraiment le renommer Canvas trois D comme ça et maintenant ce Je veux faire ici est et dire que je veux le prendre de la superposition de l'espace de l'écran à la caméra de l'espace de l'écran afin que je puisse gérer trois projection D. Et là, je vais juste utiliser la caméra principale ici, et je vais garder les extrémités dissed simples et tous les autres paramètres à leurs valeurs par défaut. En fait, je vais juste dire que je veux mettre à l'échelle avec la taille de l'écran et je vais donner une résolution de référence de 10 80 par 7 20 pour économiser la résolution de 20 p. Et je vais aussi dire que veulent orteil correspondre à la hauteur ici et que je veux donner un pixels de référence par unité de 128 pixels comme ceci. Maintenant que j'ai ceci, je vais importer quelques sprites sur, et donc je vais juste aller important la coutume que vous avez besoin d'un paquet que vous trouverez avec cette formation et là cela va me donner les entrées de set off et aussi une zone de déclenchement que nous allons mettre en place et mettre en place. Alors on y va. Nous avons ces pulvérisations ici, la vie vers le bas jusqu'à une rose et aussi une zone de déclenchement, qui est juste un carré simple. Mais il y a des paramètres ici, comme nous pouvons le voir dans ce prédateur pour que nous ayons une marge et une bordure pour que nous puissions créer un carré holo à partir de là. Ce que je veux faire, c'est alors commencer à se moquer d'un spectacle que je vais. Teoh a dit que, euh, je vais réinitialiser le zoom sur cette nouvelle cure de toile et ce que je veux pour l'instant, je vais juste, euh, euh, qui obtenir la même vue sera plus grande et à partir de là, ce que je suis aller Teoh créer est ce qui va être notre point de vue attirant, que je vais faire une maquette d'une vue de piste. Et donc pour cela, je vais aller ici et simplement dire que je veux créer un panneau et je vais me débarrasser de l'arrière-plan, quelque sorte voir des images comme ça, et je vais juste le faire. Je le donne comme un arrière-plan par défaut. Je vais en faire une cuisson et le donner comme, euh, un fond gris comme ça pour qu'on puisse le voir. Et maintenant je vais mettre son homme de ligne Ah. Donc d'abord, je vais Teoh renommer ceci pour suivre comme vous aimez ça et je vais changer cela pour qu'il soit ah aligné en bas comme ça et je vais lui donner un avec off 3 20 comme ça. Donc ça va être la représentation hors de la piste. Et maintenant que je l'ai, je vais Teoh commencer à ajouter des éléments sous vous comme nous avons vu que nous voulons avoir chaque battement représenté comme un élément de service. Donc, ce que je peux faire est simplement de dupliquer cet élément ici, et puis je vais l'appeler beat view comme ceci, et je vais le parent au lecteur que vous aimez ça et je vais réinitialiser sa position et réinitialiser son échelle comme ceci personne raisonnée, la compétence est Teoh a changé et je vais changer sa taille. Donc je vais le donner comme une hauteur de 40 et tout sera personnalisable plus tard. Mais pour l'instant, je vais juste m'asseoir ici. Et donc ce que j'ai ici c'est ah, c'est une sous-vue ici. Et ce que je vais faire Teoh ici est d'ajouter sur la vue de piste, je vais ajouter un autre composant, qui est un groupe de mise en page verticale. Et alors quoi ? Le Dodge est qu'il va automatiquement disposer tous les enfants de cet objet. Donc maintenant je vais prendre ces 100 ici, et je vais lui donner, genre, une couleur différente que je vais rendre bleue. Et maintenant, ce que nous pouvons voir ici, c'est que si je n'apaise pas cet objet quelques fois, alors il y aura automatiquement ces objets. Maintenant, nous pouvons voir que ce compartiment distribuera automatiquement cet objet le long de sa hauteur. Donc, je vais aussi ajouter un autre composant ici, qui est une taille constante, la taille commune, peur et l'avenir des condensats. Ou perdez moi de dire que je veux adapter la taille de cet objet en fonction du contenu de cet objet. Donc, basé sur les enfants du sujet et là, je vais le dire verticalement. Je voulais être la taille minimale. Et donc ce que vous pouvez voir ici, c'est que maintenant tous les objets vont être repris ensemble car cet objet est maintenant la hauteur de tous les objets ensemble. Et j'ai encore accès à l'espacement ici. Donc, si je voulais les espacer, comme avec 20 pixels chacun comme ça, alors je pourrais le faire comme ça. Donc c'est Ah, c'est un très, euh, Foley Andy qui fait ça et ça me perd aussi. Ensuite, il suffit de prendre cette piste ici et puis je vais simplement faire marcher cette piste pendant que nous allons à travers le jeu. Donc, ce que nous allons faire, c'est qu'au tout début du jeu, nous allons initialiser la vue avec toutes les informations que nous obtenons de la piste, et nous allons remplir ceci avec toutes les informations différentes. Est ah, en haut, en bas, à gauche, à droite. Et puis nous allons simplement le faire descendre comme ça. Non, quoi ? Je vais aussi Teoh faire ici et dit que je veux que cela contrôle la ah, les liens de Chine et je voulais contrôler la largeur, mais je ne veux pas qu'il contrôle la hauteur. Je voulais juste contrôler le avec. Et donc ce que nous allons aussi faire ici et maintenant comme alors dire que nous voulons changer les points de vue d'un peu pour que nous ayons la représentation à gauche, droite, vers le bas entrées. Et pour ce faire, je vais simplement, euh, ajouter Ou en fait, Ou en fait, je pourrais juste dupliquer ça et ensuite je l'ai couru. Et puis je vais régler ça pour prendre complètement, ah, ah, toute sa transformation de parent comme ça. Et maintenant, je vais remplacer l'image source. Je vais aussi réinitialiser l'échelle comme ça et là je vais changer ça en utilisant le , euh, euh, gauche Earl. Et je vais aussi dire que je voulais préserver, euh, l'attente et que je voulais aussi être blanc. Sinon, c'est bleu contre bleu, et ce n'est pas vraiment capable et donc j'ai ça. Maintenant, c'est que ça va être mes choses vers le bas va être ma vue d'entrée gauche. Et donc je vais renommer ça à gauche, et je vais renommer ça pour quitter une pièce comme celle-ci et je vais me débarrasser de tout ça . Et maintenant que j'ai ça, je vais dupliquer ça quelques fois, et tout ce que j'ai à faire maintenant c'est ah et dire, prenez celui-ci et je vais dire juste, euh, et bas. Et donc, comme vous vous y attendez, je vais apporter ça à Perot et écrire et j'aime vraiment ça. Et je vais remplacer l'image source pour utiliser le bas, pulvérisé et jusqu'à Sprite comme ça et juste comme ça. Alors maintenant j'ai tous ces objets que je pourrai utiliser plus tard. Et je vais simplement changer, peut réaliser que a obtenu de réinitialiser l'échelle à nouveau pour tous les autres objets. Donc, vous pouvez vouloir Teoh assurez-vous que vous n'additionnez pas avec ces valeurs comme celle-ci. Et maintenant, je vais dire que je n'aurai pas de couleurs différentes pour l'année. Le taux de gauche vers le haut et vers le bas. Donc fondamentalement, je vais juste prendre des collèges arbitraires qui correspondent aux couleurs de la manette PlayStation 4 . Donc je vais dire que la gauche va être en quelque sorte rose et le bas est bleu. Le droit est rouge comme ça, et le haut va être vert comme ça. Mais vous pouvez en fait choisir n'importe quelle couleur que vous voulez. Dans une autre vidéo, nous allons voir comment nous pouvons réellement profiter des entrées multi-plateformes et avoir différents jeux de sprites pour la PlayStation, la Xbox et le PC et d'autres versions. Donc c'est à peu près tout ce que je voulais. Mais je veux aussi être en mesure d'incliner l'écran pour que nous ayons une certaine perspective est que nous pourrions voir dans la maquette originale Up. Nous ne voulons pas que ce soit un très deux d beaucoup à D. On voulait être plus genre de jeu à trois d. Et pour ce faire, je vais en fait à Nous allons revenir ici, et je vais ajouter un nouveau panneau comme celui-ci à la vue de piste, et je vais l'appeler Tilt View. Et donc la vue de l'accord va rester une racine de la toile trois comme ça, et je vais simplement montrer la vue de la piste à l'inclinaison de vous comme ça. Et là avec la vue du till. Ce que je vais faire ici, c'est dire que je veux un peu de nouveau décalage par le bas, comme 100 pixels et peut-être même chose en haut, comme 50 pixels aussi. Et non, quoi ? Je veux m'assurer qu'il y a que je vais mettre le pivot sur les baies de Vory et donc je vais simplement dire l'autre pivot à, ah zéro comme ça, et je vais probablement devoir réinitialiser ça maintenant, aussi. 50 et 100 comme ça. Et ce que cela me permet de faire, c'est de faire pivoter l'écran ici comme ça et d'incliner la vue. Donc, je vais utiliser une valeur arbitraire sur 60. Et donc ce qui l'a toujours fait maintenant n'est pas de changer la position de la vue de piste. Et comme vous pouvez le voir, alors le voyage va se déplacer dans un espace de trois D sur ce est ce que je voulais. Et encore une fois, je peux vous le savoir, il suffit de dupliquer ça quelques fois, et je vais avoir, euh, l'effet que je voulais que Teoh ait peu d'intérêt et fasse ça et ça. Il dit que le lendemain ont affaire. On va, ah, ah, préparer les pré fabs qu'on peut utiliser à la place elle huit lettres et on va aussi commencer à travailler sur le scénario du modèle. 4. Enregistrer des éléments UI comme Prefabs: Ok, donc maintenant que nous avons notre moke hors de la tribu, vous ce que nous voulons aussi que Teoh fasse est d'ajouter la zone de déclenchement, qui va dire au joueur où deux et quand effectivement déclencher, euh, le entrées. Et pour ce faire, je vais simplement prendre l'objet gauche ici, et je vais le dupliquer et je vais réparer et il au refroidi Vous comme ça et va juste réinitialiser. C' est, ah position comme ça 200 et je vais aussi réinitialiser l'échelle 111 et comme ça. Et maintenant je vais changer ça pour être à la racine comme ça et surtout pour aligner la position et les gens comme ça. Et donc avec cela, je vais renommer ceci pour déclencher une zone comme celle-ci, et je vais être lu sur l'objet enfant ici et là. Je vais les changer en blanc, et je vais aussi changer cela pour utiliser la zone de déclenchement Sprite. Et là, vous pouvez voir que dans le site d'image, nous avons cette belle dit Teoh tranché, et je vais simplement décocher le centre de sentir et par le centre de contrôle de l'ONU aurait meurt que si nous avons regardé la propagation ici, Ce droit a certaines frontières et cela rendra tout simplement la transparence à l'intérieur des frontières. Donc avec cela, cela va me permettre de cibler cette zone ici et comme nous voulons plus tard être en mesure remplir, attirer la vue avec des objets, nous ne voulons évidemment pas avoir cet objet ou vraiment dans la vue de piste. Et ils sont tous piégés ici. Ce que je vais aussi faire ici, c'est simplement sélectionner tous ces objets. Je vais décocher la cible de refonte parce que ce n'est pas insoluble. Donc, je n'ai pas besoin de ah, avoir l'autre option cible de petit-déjeuner là-bas. Ce que je vais faire Teoh. Voici et simplement aller ici et créer un nouveau dossier que je vais appeler pré fabs comme ceci. Et je vais venir ici et faire glisser et déposer le dernier et à droite et et et descendre les pré fabs comme ça. Et donc je vais les donner dans la vue maintenant, juste que tu gardes un homme idéal où je vais et ce que je veux faire. Mais plus tard, nous allons juste nous débarrasser d'eux et re-remplir la vue avec les données qui proviennent de la piste. Dans la prochaine vidéo, on va commencer à travailler sur le modèle de piste. Donc, sur toutes les données que nous voulons mettre dans une piste musicale 5. Créer les données de piste (modèle): Ok, donc dans cette vidéo, on va travailler sur le modèle de piste ou sur le modèle de piste de ce contrôleur de vue du modèle Mieux. Et donc pour ce faire et simplement aller créer un nouveau dossier qui dans les scripts Canticle comme ceci. Et dans ce dossier, je vais créer un nouveau script C tranchant et je vais le faire comme ça, et je vais commencer à éditer la piste comme ça. Et donc ce que je vais commencer, je vais juste me débarrasser de tout ça, et je vais, hum tout ça dans l'espace des noms une sorte de faire ça. Ça fait que c'est ta lettre à, ah, gérer le projet. Et donc avec ça ici, je vais juste garder la trace pour être un comportement immoral pour l'instant. Et nous pouvons penser qu'il est un joueur de piste d'une manière ou d'une autre. Et je vais juste penser à quoi ressemblent les données ? Donc, le modèle dans le contrôleur de vue du modèle est très important car ce sont les données que nous avons utilisées pour afficher la vue. Mais ce sont aussi les données que nous utilisons dans le contrôle ou deux contrôle le jeu jeu. Et c'est donc très c'est la racine même d'un contrôleur de vue de modèle. Et alors quoi ? Je vais commencer à demander à Teoh. Voici ce qu'est une piste ? Quelle est l'information que nous voulons avoir dans une piste. Donc, très évidemment, nous pourrions commencer à réfléchir assez. Ah, eh bien, il a un titre et un nom d'auteur et il y a une description. Il y a un album, nom et ainsi de suite. Et donc tout est joli à vous, et je ne vais pas les mettre ici. Mais nous allons probablement le faire dans un chapitre ultérieur, ou pour commencer à afficher des collections de pistes et laisser le joueur à la trêve entre plusieurs pistes. Mais c'est sur ce que je veux vraiment que Teoh se concentre, c'est que cette piste va faire dans ma manette ? Ça va dire ma vue de piste. Quelles sont les informations à afficher ? Et cela va dire à mon contrôleur et venu comment utiliser cette information, et donc fondamentalement ce sera une liste d'informations parce que cela va simplement être dans l'information qui dit que c'est chaque battement que nous voulons prendre une entrée et nous voulons afficher un entrée et nous voulons prendre une entrée et nous assurer que le joueur est joué. Ces entrées. Donc, je vais juste le représenter comme une liste d'entiers. Je pourrais créer des données plus intelligentes sur ce qui est le rythme. Peut-être qu'il a une contribution dans le temps et ainsi de suite, mais c'est quelque chose que nous allons juste entrer dans. Ah plus tard, je suppose. Mais pour l'instant je vais juste Teoh, rendre ça très simple. Ce sera une liste d'entiers et quand même, si c'est zéro, alors il va être laissé. Cela signifie que nous attendons l'entrée gauche. Si c'est un, alors c'est probablement, Ah, en bas. Et si c'est aussi, c'est fini. Et si c'est trois, c'est juste. Et je vais aussi utiliser une valeur par défaut, une valeur de moins un pour représenter un temps vide. Eso un rythme que nous ne voulons pas jouer. Et donc pour cela, je vais juste dire que je veux créer ceci une liste publique d'entiers que j'appelle beats et c'est tout. Et donc chaque fois que je reviendrai ici, je vais maintenant créer un nouveau jeu en m'opposant ici pour que nous puissions jeter un coup d'oeil à ça. Avoir les données sont représentées. Et je vais appeler cette piste un joueur comme celui-ci, et je vais ajouter une piste de composant. Et ce que nous pouvons voir ici, c'est que c'est déjà ah, Sarah réalisable. Donc je peux juste dire que je veux en avoir trois, et ensuite celui n'est pas à jouer. Et la seconde est de jouer l'année l'entrée gauche et la suivante est de jouer l' entrée vers le bas , par exemple. Et c'est la structure des données. C' est ce que nous voulons que Teoh gère comme une structure de données. Et il y a aussi une information très importante. En ce qui concerne le contrôleur de jeu est les battements par minutes parce qu'il va dire le gameplay . Quel est le bit par minute ? Quelle est la vitesse de cette piste ? Et c'est une autre information que je veux ajouter ici, et je vais le mettre au-dessus d'eso que si nous avons comme une très longue piste, nous ne voulons pas que les orteils trouvent cette information tout le chemin vers le bas. Donc, je vais dire image publique ou B p m égal et je vais lui donner une valeur différente de 120 comme ceci. Et donc chaque fois que je reviendrai ici, je reçois les informations du BPM ici. Alors, c'est ça. Et ce que nous voyons ici est que dans ce composant de piste ah ici nous avons toutes les données et nous pourrions commencer à ajouter toutes les X. Si vous étiez dans une architecture basée sur un composant, nous commencerions à ajouter une mécanique lthough qui affichera la vue de la piste, puis serait également d'annoncer la mécanique de jeu. Mais parce que nous voulons séparer les données de la vue et du contrôleur, l' un des problèmes que nous avons ici est que nous savons vouloir avoir un objet de jeu pour chaque piste. Ah, que nous voulons pouvoir jouer. Et donc nous ne voulons pas que ce script fasse référence à un comportement de modèle, et c'est ce que nous allons faire dans la prochaine vidéo. Nous allons changer cette piste en un modèle de données au lieu d'être un comportement moteur 6. Separating les données des données du composant: Ok, Donc dans cette vidéo, nous allons maintenant transformer ce modèle de données ah en un modèle de données réel et totalement abandonné du mode de comportement qui l'a géré. Donc, ce que je vais faire ici est alors dire que je veux créer une nouvelle classe d'objets. Je vais faire un nouveau cours public, et je vais appeler cette piste, et je vais appeler les données de piste pour que ce ne soit pas, euh s pour qu'il soit dans le même nom est l'autre et donc là-dedans et je vais simplement prendre ces deux lignes ici. Donc, je vais prendre les propriétés de là dans les données commerciales et ici, je vais référencer une piste publique essayant des données, je vais faire la piste comme ceci, et chaque fois que je fais cette note est que si je retourne dans l'éditeur maintenant, vous pouvez voir que tout va disparaître, et cela va disparaître parce que ces données de piste ne sont pas survivables par défaut. Cela signifie donc qu'il ne peut pas être enregistré dans le format de fichier d'unité et nous devons donc changer cela. Je vais appeler le système Sarah Réalisable. Et c'est donc un attribut qui indique que cette classe est réalisable par la NASA et donc toutes les propriétés peuvent être stérilisées. Et maintenant je vais retourner dans l'éditeur, et ce que nous voyons c'est que nous avons maintenant la piste. Et donc la piste est là et nous pouvons changer, euh, les périmètres que nous avions et je pourrais avoir plusieurs pistes aussi, par exemple, je pourrais en faire une liste de pistes. Et ce que je reçois maintenant l'annonce de Teoh, c'est je veux aussi être capable de décorer un peu cet inspecteur. Je vais utiliser un en-tête comme celui-ci, que Duncan trop cool décontracté. Je vais aller à ce jeu que les paramètres comme celui-ci et je vais aussi ajouter une pensée juste pour s' assurer que les utilisateurs de l'éditeur comprendront ce que c'est. Et donc je vais juste ajouter le nombre de battements par minute comme ça. Et je veux aussi ajouter un attribut de plage afin que nous ne puissions pas aller, par exemple, à zéro minute Bittner et donc je vais l'utiliser plage de plage. C' est passé en revue. Et donc l'attribut range prendra simplement un minimum. Tout dit juste 30 et maximum va être 360 ce qui devrait être assez difficile, je suppose. Et pour que ça ? Non, si je reviens dans l'éditeur, on verra qu'ils auront les paramètres de lecture et les astuces de l'outil. C' est Ah, c'est déjà assez sympa, mais c'est déjà assez sympa, mais ça rend ça difficile à sauver parce que, ah,tout est dans une seule scène. ça rend ça difficile à sauver parce que, ah, Donc, je pourrais fondamentalement là l'information est toujours en référence dans le comportement moteur parce que c'est le comportement de l'argent qui fait référence et crée et Cyril yeux une nouvelle donnée de piste . Et donc ce n'est pas très pratique à manipuler dans l'éditeur. Si je voulais être en mesure de balayer les pistes raisonnablement et ni à l'exécution, parce qu'à un moment donné je veux vraiment être en mesure de garder un seul joueur et juste balayé les disques d'une manière ou d'une autre. Donc, je veux juste être capable de transpirer les pistes et juste ne pas avoir à échanger le joueur pour balayer la piste qu'il fait référence. Et c'est ce que nous allons toucher dans la prochaine vidéo quand une Baluch Annette a dû isoler la médaille de piste du comportement moteur. 7. Faire des données un de manière un actif personnalisé: Donc, dans cette vidéo, nous allons regarder comment isoler totalement la médaille de piste du comportement moteur afin que nous puissions référencer n'importe quelle piste gardant le même joueur de comportement. Et donc ce que je vais faire ici, c'est revenir dans le script de camion ici et en gros, je vais juste me débarrasser de ça ici comme ça. Et je vais ramener ça dans la piste comme ça. Et je vais simplement me débarrasser de ça aussi. Et maintenant, je vais dire que la piste n'hérite plus d'un comportement, mais hérite de descriptif va objecter. Descriptive va objecter, représente les données. Donc, c'est un objet Cerulli Zobel il d'autres façons de plusieurs yeux objets que vous pouvez utiliser la centralisation XML . Vous pouvez également utiliser la civilisation Jason si vous voulez échanger des données. Ah, totalement en dehors de l'unité, c'est très facile d'échanger des données en utilisant d'autres formats. Mais la façon la plus simple que dans l'unité de le faire dans l'éditeur dans à Runtime est d'utiliser le script,l'objet à script, base de plantes et l'objet si discret et de me perdre pour créer des données personnalisées dans l' éditeur Unity et de les référencer plus tard. Et donc ce que je vais faire ici, c'est que si je fais ça, alors si je retourne au théâtre, ça ne marchera plus. Donc je vais simplement me débarrasser du joueur de piste. Comme on peut le voir ici. Le composant de piste sur me dit que le script associé ne peut pas être chargé car il n'est plus un comportement moteur. Donc non, je vais simplement me débarrasser de cet objet ici. Et il y a un raccourci très rapide qui me perdent pour créer les données. Et je fais cela en ajoutant le menu Créer des actifs. Ah, attribuez ici et là. Je vais lui donner un nom Munyon. Et donc le nom de l'argent va être je vais juste dire que l'unité Coach Flash bat un nouveau brouillon comme celui-ci, et j'espère aussi lui donner un nom par défaut et le but du fichier par défaut sera pas beats track dot asset et à cause de ça va juste être un atout. Il doit être sauvé, n'a pas d'atout. Et donc je vais juste le faire comme ça et fermer la déclaration d'attributs et maintenant quand je reviendrai ici. Oui. Ce que vous pouvez voir, c'est que je ne vais pas venir ici et je ne peux jamais créer dans le menu final ici, vous avez besoin d'un entraîneur bat nouvelle piste. Donc, d'abord, je vais créer un nouveau dossier et je vais appeler ces pistes comme ça et dans les pistes, je vais aller créer une nouvelle piste. Je vais appeler ça 120 bpm comme ça et vous pouvez voir que j'ai maintenant la capacité de faire à peu près ce que je faisais avant. Mais c'est maintenant dans un format de données. C' est maintenant dans le fichier que je peux utiliser plus tard. Et je peux aussi, euh, sauver ça et distribuer ça très facilement. Il est très facile de gérer l'éditeur indépendant et très facile à regarder l'exécution maintenant que nous avons Ah , cette une des principales choses que nous devons faire lorsque nous créons un modèle de données est des moyens rapides générer en quelque sorte des données fausses ou des données de dégustation parce qu'il Je veux juste ne pas avoir à entrer ici et dire, Eh bien, je veux en avoir cinq et le premier avec trois sera moins un et ainsi de suite. Je veux être en mesure de générer ces données de test de thèse avant de créer tout type de données d'éditeur perd aux deux ou les données dans l'éditeur, que nous allons aborder plus tard. Mais je veux pouvoir générer des données de test très rapidement, et c'est ce que nous allons aborder dans la prochaine vidéo. 8. Créer des données aléatoires (pour les tests): Donc, dans cette vidéo, nous allons regarder comment générer des données de dégustation très rapidement à partir de l'éditeur. Donc, pour ce faire, je vais simplement revenir dans le, euh, modèle de piste ici, et ce que je vais faire ici, c'est, alors je vais commencer à ajouter des informations pour générer ces données. En général, vous ne mettez pas les informations qui génèrent les données dans le modèle lui-même. Vous mettrez cela dans une classe A netted car la classe éditeur sera responsable de générer les données. Par conséquent, les données ne doivent pas contenir les erreurs paramédicales que vous avez utilisées pour générer les données . Sauf si vous voulez être capable de régénérer les données et que vous voulez les centraliser là-bas rapidement, et donc pour le rendre très facile, je vais juste le mettre dans le modèle de piste lui-même et le plus encore pour mettre les données dans le modèle de piste lui-même afin que nous puissions éventuellement utiliser ces méthodes au moment de l'exécution et être en mesure de générer des données de fondu aléatoires au moment de l'exécution. Mais vous devriez généralement garder cela hors de la piste. Modèle de données pour mettre cela dans les classes d'édition qui ont utilisé pour générer le modèle lui-même. Ce que je vais dire Teoh ici, c'est que je vais d'abord référencer un entier public statique , qui est ce que je vais appeler entrée et que je vais le rendre difficile parce que je veux que cela soit aussi généré est possible. Et donc pour l'instant, nous avons défini que nous voulions être capable Teoh utiliser des entrées pour gauche et droite et vers le bas afin qu'il fasse quatre entrées. Mais nous pourrions éventuellement utiliser différentes versions comme une version de flux vers le bas, une version plus simple avec seulement deux ou trois entrées ou une plus compliquée comme un utilisateur Ah avantagé , un joueur avancé comme un pro, vous pro sorte d'entrées. Et puis nous aurions à gérer plus de quatre entrées. J' ai donc besoin de référencer le nombre d'entrées que je veux utiliser pour générer les données afin qu' elles passent de 0 à 3. Ou ça pourrait aller de 0 à 7 si je voulais avoir, genre, huit entrées différentes. Et là, je vais simplement copier basé, euh, ceci parce que cela va juste prendre trop de temps à taper. Mais laissez-moi vous expliquer ce que j'ai ici. Donc ça va être le pré roll. Le pré rouleau est la façon dont les battements vides maney que nous voulons avoir au début de la piste. Parce que si nous ne voulons pas que la piste commence par le gameplay dans Stanley, nous voulons laisser le joueur prendre le temps de voir les notes communes. Ce sera donc le nombre de battements vides à ne pas jouer au début de la piste. Et puis nous allons ajouter des notes. On va ajouter des battements par blocs. Et c'est ainsi que nous voulons avoir des battements minimums maney dans un bloc. Et c'est ainsi que le nombre maximum de plage que nous voulons avoir par bloc. Et là c'est le nombre minimum hors plage vide que nous voulons avoir entre les blocs et c'est le maximum et le nombre de battements vides entre les blocs et à la fin, les salaires ont le nombre de blocs que nous voulons générer. Donc, l'idée ici est que nous allons juste faire une grosse boucle et nous allons commencer à ajouter des battements basés sur rend um, valeur des nombres aléatoires pour le faire. Donc, pour le faire à nouveau, je pourrais mettre la méthode randomize. Je pourrais le mettre dans une classe d'éditeur afin qu'il soit seulement disponible dans l'unité aidée ou plus disponible à temps sur et toujours garder les périmètres dans la classe elle-même. Mais je vais juste mettre ça dans la piste pour l'instant. Et donc c'est ah, toujours un Teoh pratique pour l'utiliser en temps d'exécution si nous voulions générer des données aléatoires. Donc là, je vais déclarer une nouvelle fracture publique, et je vais l'appeler tomber comme ça et au hasard. La première chose que je veux faire est alors dit que les battements sont égaux à la nouvelle liste des entiers. La première chose que je dois faire est de réinitialiser ça. Sinon, je vais juste continuer à ajouter à ah, la liste et ils sont ce que je vais faire ici est alors commencer par le pré-rouleau. Donc pour le périphérique, je vais faire une boucle complète, et je vais dire pour enterré votre B égal zéro et B étant un moins que pré roll et puis être incriminé chaque Luke. Alors quoi ? Qu' est-ce que je fais que je fais des battements ajouter parce que c'est ah, c'est une liste. C' est très simple. Et puis je dirai que les battements ajoutent moins un. Donc, cela va ajouter les données moins un que je veux dire pour les battements GMT, puis nous verrons plus tard comment nous pouvons gérer cela. Maintenant, ce que je veux que Teoh fasse aussi, c'est pas dire quatre et ils sont tous sûrs pour entier. Et je vais appeler ce Bl Caylee Block est égal à zéro, puis bloquer être inférieur au nombre de blocs et encore bloquer être incriminé à chaque fois. Et maintenant, je vais dire que je veux définir une nouvelle longueur de bloc Comme comment ? Maney, combien de battements allons-nous avoir dans ce bloc ? Et donc là, je vais définir le va appeler cette longueur de bloc et la longueur de look va être rendu um gamme. Donc, je vais utiliser la plage aléatoire et vous pouvez voir qu'ils sont l'une des choses que j'ai vues plusieurs fois, en fait, euh, où les gens genre de lutte est de comprendre qu'il y a deux implémentations de la la méthode de la plage. Il y a merveilleux les flotteurs et un pour les entiers et celui pour les entiers nous dit que le maximum est exclusif. Donc, si vous dites aléatoire 01, vous obtiendrez Onley zéro. Tu n'en auras jamais un. Donc, si vous voulez une valeur qui est aléatoirement zéro sur un, vous devez dire plage aléatoire 02 afin qu'elle aille de 0 à 1. Et donc je vais utiliser, euh, euh, tout simplement un bloc minimum et un bloc maximum comme ça et Granger a dit, plus un pour que nous, ah, utilisions l'autre la valeur maximale. Maintenant, je vais dire que pour entier être égal à zéro et ensuite être un moins que les revendications de Google et puis le plus, je vais commencer à ajouter quelques battements. Et donc là, je vais dire que vous avez fini votre être égal Brendan Range genre de la même chose. Clé aléatoire. Et là, cette fois, je vais utiliser zéro, et je vais utiliser l'entrée, um, entrées ici valeur qui ont créé Ah ici. Donc c'est une variable statique pour qu'elle soit partagée entre toutes les pistes, et, euh, euh, nous pouvons juste la changer plus tard si nous le voulons. Et donc là, j'ai ce nouveau, euh, nombre aléatoire généré. Et donc à cause de ce qui est basé sur zéro, alors je ne veux pas faire plus un, parce que sinon cela finirait avec, um, valeur. Il y aurait hors de l'euro et il dira, euh, euh, battements ajoutent là provoquent l'intérêt au-delà du rythme que je viens de créer comme ça. Et maintenant que j'ai ce, euh, ce que je peux aussi faire c'est que je vais faire la même chose avec l'intervalle et avec l'intervalle, je vais juste entrer dans des avions de trou comme cette fin d'une longueur, et là cela va utiliser l'intervalle minimum et de l'animal maximum comme celui-ci. Et ça ne va pas utiliser Interval Blaine pour le maximum. Et là c'est juste que nous allons juste, euh, cette fois, dire que nous voulons ajouter moins un comme nous l'avons fait pour le pré roll. Et alors quoi ? C' est ce que cela va faire ici est alors dire que nous allons entrer dans cette boucle ici pour chaque bloc que nous voulons créer. Donc, nous allons commencer à créer un bloc, puis un intervalle un bloc, un intervalle, un bloc quand intervalle. Mais on ne veut pas avoir d'intervalle à la toute fin. Nous ne voulons pas finir par un intervalle. Et donc ce qu'on peut faire ici, c'est dire que si on bloque donc on va dire si le bloc Ah, décapace le nombre de blocs moins un. Ensuite, nous allons juste faire une pause pour sortir de la boucle cellulaire. Si nous avons atteint le dernier bloc et que nous avons cette fonction de génération ah aléatoire que nous pouvons utiliser plus tard. Et donc pour l'instant, la seule façon de l'utiliser si je retourne au théâtre juste pour m'assurer que tout va bien là-bas, je peux voir tous les périmètres qui ont. Mais c'est tout. La seule façon de générer ces données est d'utiliser un autre script, ce runtime. Et c'est pourquoi travailler pour commencer à travailler sur un éditeur personnalisé pour ajouter un bouton personnalisé ici qui perd de cliquer sur ce fond et générer ces données aléatoires. Et c'est ce qu'on va faire dans la prochaine vidéo 9. Édition des données avec un inspecteur de propriété personnalisée.: Donc, dans cette vidéo, nous allons créer un personnalisé soit pour la classe de piste qui perd Teoh, Ajouter quelques boutons ici qui va est de déclencher la méthode randomisée que nous avons déjà implémentée. Alors, allons-y dans le script. Et je vais créer un nouveau dossier que je suis Canticle 80 là-bas. Et il est très important de le nommer comme ça pour que, euh, les scripts qui sont dans ce dossier ne soient pas évalués au moment de l'exécution. Et donc chaque fois que vous construisez, chaque script qui se trouve dans un dossier d'éditeur ne sera pas pris le long. Le bâtiment ne générera pas d'erreurs lorsque vous utilisez et référencez certaines classes d'édition. Et dans ce dossier de l'éditeur, je vais créer un nouveau costume, script court, que je vais aller à l'éditeur de piste juste comme ça. Et maintenant voyons ce que nous pouvons faire quand je, euh, quand vous pouvez voir, c'est que le ah, dans un des développés, vous pouvez voir que cette, euh, tragédie objet ou fait maintenant partie de l'assemblée. Tu vois , rédacteur en chef, euh, ici et pas partie de la ah, l'autre, donc tu peux voir qu'il n'existe pas ici. Donc, il est là-dedans. Et donc, il ne sera construit que pour une utilisation dans l'éditeur. Alors quoi ? Je veux ah, faire. Voici et, euh, juste ajouter le même espace de nom comme ça et comme ça. Et maintenant, je m'en vais. Teoh a dit que cela va être dans 80 la classe, donc il va hériter de l'éditeur et vous pouvez voir que l'éditeur n'existe pas pour une raison simple que j'ai l'éditeur Unity et l'utilisant. Et donc maintenant je peux juste dire éditeur comme ça et avec une classe native, nous devons aussi ajouter la coutume qu'il a ou attribut ici pour dire quel type d'objet il peut obtenir et il y avait juste pour dire que c'est destiné à, hum, c' est la piste comme ça. Et maintenant, nous allons faire référence attirer de l'intérieur de l'absolu. C' est la première chose que nous voulons faire est que nous voulons référencer l'objet que l' éditeur est en train d'éditer. Donc là, je vais faire référence à une nouvelle piste, que je vais cool piste là-bas. Nous avons quelques méthodes de message que nous pouvons utiliser tel est sur enable et ainsi de suite. Activer va être déclenché chaque fois que nous sélectionnons un objet dans l'éditeur qui affiche les données. Et puis je vais dire que la piste est égale et ensuite aussi utilisée Target et Target est un membre hérité de la fin de la classe parce que c'est juste un bouton Jek à je vais devoir le renvoyer à une piste comme celle-ci . Ce que nous pouvons aussi faire, c'est passer outre à la méthode qui est froide pour l'inspecteur Gree comme ça et pour l'inspecteur gooey. Si je fais juste le d'un tour comme ça et puis je reviens ici et maintenant je sélectionne la piste . Nous pouvons voir que nous avons perdu toutes les données simplement parce que nous ne montrons pas les données. Donc, si je veux afficher les données, je peux simplement appeler les baies de la bouée Inspecteur. Et en faisant cela, j'appelle le membre hérité que j'appelle la version héritée sur l'inspecteur Goofy. Et maintenant je vais obtenir Thea les données affichées à nouveau. Et maintenant ce que je veux faire est d'ajouter plus de fonctionnalités à cela et donc pour faire cela, ce que je veux faire est alors de vérifier si nous avons déjà quelques informations, ah bits dans la piste, donc je pourrais juste faire si Trek dot bat le nombre de points est égal à zéro, alors je veux faire quelque chose dans sinon afficher probablement un message différent et offrir différentes, différentes choses là-dedans. Ce que je vais faire est d'aller ajouter, ah, éditeur va utiliser la mise en ah, page gooey de l'éditeur pour afficher une boîte d'aide. Et à la barre, Boggs. Je dirai que la piste est toujours juste la piste vide sur cette In on Pass une bande de message, je dirai des informations de type de message comme ceci. Et donc nous ne pouvons vraiment vérifier ça. Par exemple, si je reviens ici et je dirais que je veux zéro. Alors j'ai cette information ici. Ça me dit que la piste est vide et donc c'est Ah, c'est une chose. Et maintenant quoi ? Je veux aussi Teoh ici n'est pas dire sur la mise en page gooey grilling bouton. Et puis pour les gens qui ont déjà utilisé dans le passé le vieux Gu Easy Stam. Il fonctionne comme si les lunettes fonctionnent beaucoup de la même façon que la vieille tige grasse. Donc, j'appelle cette méthode qui va afficher un bouton et retourner également l'état du bouton chaque fois qu'il est cliqué. Et donc cela reviendra vrai lorsque nous cliquerons sur ce bouton. Donc, ils sont aussi juste dit, Générer Random Trek et nous allons passer un style d'éditeur passen. C' est un style et utiliser le nombre, mais dans de nombreux style de bouton pour cela dans. Donc, cela va afficher le bouton. Donc si je retourne au théâtre maintenant, nous devrions voir ce corps et générer des pistes aléatoires. Mais ça ne fait rien. Cela ne fera quelque chose que si je mets tout cela dans une déclaration if comme celle-ci et ensuite dire ce que je veux faire et ce que je veux faire est et dire piste aléatoire comme ceci. Et c'est la raison pour laquelle j'ai mis cette méthode avant de créer La méthode est une méthode publique afin qu'elle puisse être facilement évaluable à partir de l'éditeur de piste parce que si c'était le cas, si elle était privée que la tragédie de sa classe ne pouvait pas y accéder. Et maintenant que j'ai ça. Je peux aussi simplement copier coller ceci et là je vais simplement changer cela et là je vais définir une piste aléatoire de date comme ça pour que nous obtenions un message différent et nous y allons. Donc maintenant, j'ai généré une piste aléatoire. Je clique sur cela, et comme nous pouvons le voir, la méthode fonctionne assez bien. Et nous avons tous les battements et les réglages aléatoires, tout en bas. Donc peut-être qu'on veut vraiment prendre ça, euh, différemment. Mais en fait, ce que je veux vraiment, c'est de ne pas afficher tous les rythmes comme ça. Et avant de faire quoi que ce soit d'autre, ce que je vais aussi faire ici, c'est ensuite ajouter quelque chose de très important. Qu' est-ce que c'est ? Soit l'utilitaire et je vais le faire. Habituellement, la méthode est appelée set dirty et a l'objet track. Et c'est très important parce que chaque fois que vous l'enregistrez, projettez dans l'immunité. Lorsque vous enregistrez un projet et continuer, faites enregistrer nudged la scène mais enregistré le projet. Il enregistre toutes les données qu'il sait qu'il doit enregistrer. Et si vous changez quelque chose à un objet comme une donnée, vous changez. Vous avez modifié les données d'un objet et vous devez indiquer à l'éditeur que cet objet est maintenant sale. Il doit donc être enregistré chaque fois que vous enregistrez le projet ou l'un de vous enregistrer chaque fois que vous quittez l'éditeur. Et maintenant ce que je veux aussi que Teoh fasse ici c'est de revenir dans le ah, dans l'objet de piste ici. Et je vais simplement ajouter un et l'attribut ici pour dire cacher dans Inspecteur parce que je ne veux pas afficher les informations bits dans l'inspecteur ou au moins je ne veux pas qu'il soit affiché comme ça. Donc maintenant ce que je veux vraiment Teoh que vous avez ici est juste les paramètres de lecture, les paramètres aléatoires, les titres des générations aléatoires, puis le bas. Et donc ce que je vais faire, c'est et y retourner et je vais aussi prendre la propre méthode de l'inspecteur. Je vais le prendre jusqu'au bout pour qu'il arrive en premier. Et donc ce que nous pouvons voir ici maintenant, c'est que nous avons ce corps ici maintenant dans ce que je peux faire ici est commencé à afficher les données d'une manière différente. Et pour ce faire, je vais ah, revenir ici et je vais dire que je veux avoir un 80 là-bas pour utiliser la mise en page Gree de l'éditeur , et je vais utiliser la grande vue de défilement. Et je vais commencer sa vue cool comme ça parce que je ne veux pas que les bits de la SLA soient affichés dans le vory dans un très long chemin. Donc, je veux aller à l'afficher, hum, hum, dans une vue de défilement. Mais comme nous pouvons le voir, cette cruelle d'entre vous attend à ce qu'un vecteur connaisse sa position. Donc je vais devoir me référer ici. Je vais faire référence à une victime, aussi, que je vais appeler position comme ça et mais là, je vais passer la position comme ça . Et maintenant, je vais aussi l'utiliser J'ai accepté Lee à nouveau. Et là, cette fois, je vais faire la vue de défilement de fin comme ceci et entre quoi que ce soit. Tout ce que je mets entre les deux sera automatiquement daté dans ces vues de défilement. Je vais faire une boucle et je vais faire la boucle pour entier. Je suis égal à zéro. Je suis Liz. Puis le nombre hors bat sur les traces de la plage qui comptent comme ça et je suis incriminé chaque fois que je veux afficher. Je vais utiliser le rédacteur en chef Gooey tard. Oui, mais encore une fois. Et je vais utiliser le briquet indigène. Donc, nous avons vraiment différentes façons d'afficher un indigène qui est un champ, ou le pop it et ainsi de suite. Mais je vais utiliser l'indigène plus tard. Et donc la calomnie de l'imageur demande une valeur et une valeur minimale et maximale. Donc là, je vais dire que je veux passer des battements de points de piste et puis prendre ah, le courant que ce soit l'information. Et puis je dirai que la valeur minimale est moins un dans la valeur maximale va être trace point dans chienne. Et en fait, ce sera les entrées de piste en verre moins un, parce que c'est ah qui l'a suivi, ce qui est une, um, une propriété statique. Donc, c'est un sensé au niveau de la classe, pas au niveau de l'instance, et donc je vais juste le faire comme ça, et si je reviens dans l'inspecteur, alors je peux voir dans une vue de défilement toutes les informations. Ce que nous ne pouvons en fait pas est, cependant, que la vue de défilement n'est pas à base de plantes de défilement. Et ce n'est pas évolutif parce que nous lui disons d'afficher un défilement de vous en donnant une position. Mais nous n'avons jamais attribué cela de retour donc et c'est la façon dont la plupart de l'éditeur de widgets fonctionneront. Est-ce que l'allure vous d'afficher la vue de séquestre, étant donné une position, puis il retourne également la nouvelle position. Donc, nous pouvons simplement le mettre à jour comme ça. Et comme nous y sommes, ce que nous pouvons aussi faire, c'est de ne pas dire que nous le pouvons. Maintenant, c'est les données générées aléatoirement. En faisant cela, je dirai simplement que nous affichons la valeur. Mais si cette terre de changements, alors nous mettons à jour la dévaluation aussi. Et si je fais ça, alors seulement je peux maintenant faire défiler ici. Mais je peux aussi mettre à jour et changer la valeur si je le veux comme ceci. Et pour finir cela, ce que je vais aussi faire ici, c'est ensuite ajouter une autre décoration à ah, potentiellement filtrer l'information. Donc, je vais aussi ajouter une nouvelle valeur taureau, que je vais appeler les données de plage d'affichage comme ça. Et là, nous ne voulons faire tout cela que si nous avons des informations, sinon, si nous n'avons pas d'informations, cela n'a aucun sens d'essayer de les afficher. Et donc je vais faire quelque chose comme ça si nous voulons afficher le camionnette de données que je vais et arriver à ça. Et maintenant, je vais et un autre widget, qui est l'éditeur Ah, 80. Il y a Greeley dehors, et il fait froid, plein doute et ah, nous passons la valeur et nous passons simplement le nom. Donc, je vais juste dire, il suffit de jouer des battements comme ceci dans, bien sûr, mis à jour la valeur afin qu'il affiche la valeur et il met à jour la valeur. Si nous cliquons dessus, puis nous disons, si c'est vrai, alors nous affichons le reste à l'échelle de l'UE. Donc je vais dire ce retour dans le rédacteur en chef. Et maintenant ce que nous pouvons voir ici, c'est que nous avons un beau doute plein qui perd à afficher ou ne pas afficher les deadbeats comme celui-ci, et je peux mettre à jour les pistes. Et donc je pourrais, par exemple, maintenant aller et créer une nouvelle piste pour tester ceci et ce que nous pouvons voir maintenant. Voilà, c'est intéressant. Ah, ce que nous voyons ici, c'est que, euh, ouais, bien sûr, chaque fois que nous créons pour les premières images que nous venons de créer Ah, ceci. Ah, cet objet, alors cette liste n'a pas encore été initialisée. Donc, l'inspecteur essaie d'accéder à l'autre propriété du numéro de la propriété de compte de cette liste, et le moins n'a pas encore été initialisé. Donc ce qu'on peut faire ici et dire piste. Ils ont suivi qui bat une douzaine d'égal. Non. Et le compte est ah, zéro et sinon fera juste autre chose. Si c'est non, nous reviendrons comme ça. C' est encore plus facile et plus sûr. On afficherait juste le beige sur l'inspecteur Gooey. Ah, et si ce n'est pas initialisé, alors nous quittons la méthode. Et donc essayons à nouveau. Je vais me débarrasser de ça et le refaire pour m'assurer que je vais juste effacer ça. Allez créer une nouvelle piste. Et là, on y va peu de travail. Donc, et je vais appeler ça 90 bpm comme ça et changer cette valeur ici. Je me sens comme ça là-dedans. Nous pouvons voir que la piste est vide et puis nous pouvons juste aller et ledit Générer piste aléatoire. Ok, donc c'est tout pour le mannequin. Pour l'instant. Dans les prochaines vidéos, nous allons commencer à travailler sur la vue de piste. 10. Configurer le composant de vue Track: dans cette vidéo, nous allons commencer à travailler sur la vue de piste. Donc, sur le port de vue du contrôleur de vue du modèle, euh, modèle ici. Et donc ce que je vais faire Voici et revenir dans le dossier des scripts et dans un nouveau script court C , que je vais suivre vous comme ça, et je vais le trier. C' est maintenant, même chose. Je vais aussi le mettre dans l'espace nom bat ça. Ok, comme ça. Et maintenant, ici, je vais juste se débarrasser de tout ça pour l'instant. Et ici. Ce que je sais, c'est que ce composant nécessite quelques autres compétences pour fonctionner correctement. Donc, je vais commencer à ajouter les attributs de composants require et à utiliser un type off. Et je sais qu'il faut une verticale, et je ne trouve pas la verticale. Tout simplement parce que je n'utilise pas le moteur d'unité. Vous pourquoi ? Je vais ajouter l'utilisation de toi au moteur. Vous j'ai d'abord et puis je peux Non, vous utilisez le groupe de mise en page verticale. Et donc c'est la première chose que je veux que Teoh spécifie. Et je voulais aussi, euh, utiliser ici. Je sais qu'il nécessite également un contenu de la fièvre de taille commune, travail des orteils probablement. Donc, je vais ajouter ceci de sorte que chaque fois que j'ajoute ces composants à n'importe quel objet et il ajoutera automatiquement ces composants s'ils sont manquants, et je sais que c'est aussi commun et que cela doit être mis sur un, um sur un objet u Y. Donc, je vais aussi en ajouter un avec une transformation directe comme ceci. Donc encore la même chose. assure juste que je vais avoir tous les composants et évaluer pour accéder à tous les commentaires dont j'ai besoin. Maintenant ce que je veux Teoh. La première chose que je veux faire ici est en référence à la piste, bien sûr. Et pour l'instant, je vais juste faire une référence directe à la piste et nous le verrons plus tard. Nous voulons avoir une nouvelle référence indirecte à la piste, mais là je veux avoir une référence aux pistes et nous allons faire une référence à un objet de piste, que je vais suivre et ça va être privé, mais ça va être si réalisable. Donc nous allons utiliser les attributs remplis sérialisés et c'est privé parce que nous ne voulons pas avoir d'autres communs et commencer à jouer avec. Ce membre est généralement une bonne idée d'utiliser simplement des variables privées. Et si vous voulez exister, alors j'avais quelques propriétés, comme obtenir des méthodes définies. Mais je sais aussi, c'est que je veux faire référence aux pré fabs que je vais faire. Au lieu de cela, elle a mangé, comme la gauche vers le haut, vers le bas objets à droite que j'ai besoin à la place, elle huit basée sur les données que j'ai trouvé dans la piste Donc encore une fois je vais Thio Thio transformation directe. Je sais que ces objets ont besoin d'une transformation rouge. Je suis juste bon. Au lieu de simplement référencer un objet de jeu, je vais référencer une transformation d'épave donc ils me perdent pour m'assurer que l'objet que j'ai mis a un enregistrement du composant. Et puis je vais appeler ça à gauche comme ça et encore, j'utiliserai les j'utiliserai lesattributs remplis d'yeux et là je vais juste faire la même chose avec de haut en bas comme ça. attributs remplis d'yeux et là je vais juste faire la même chose avec de haut Et j'ai aussi besoin de faire référence à un autre, qui va être la référence à l'espace vide er ou diviseur ou vous le nommez, je vais aussi faire une référence à une autre transformation de l'épave, qui va être les restaurants de la objet actuel, je vais appeler ceci sont transformés. Maintenant, je vais commencer à ajouter que je pourrais utiliser la méthode awake, mais je ne suis pas sûr que le lecteur que vous allez être initialisé sur awake et je ne veux pas pouvoir contrôler chaque fois qu'il est initialisé. Donc, je vais une nouvelle méthode de fourniture publique que je vais appeler bin et ça va être initialiser à base de plantes avec une piste. Donc, c'était un autre objet, un autre composant pour initialiser cette vue de piste, lui donnant une piste. Et donc je vais appeler cette piste comme ça et comme ça et mais là je vais ajouter aussi le message de l'histoire, et là je vais commencer à faire l'dedans et puis je vais passer la piste que je référence localement dans ce et là, la première chose que je dois faire est de dire que ou transformer est égal à la transformation du sujet , mais comme une tranchée directe comme celle-ci, donc je ne peux jamais revenir en arrière. L' éditeur ici, et je vais sélectionner la piste de vous, et je vais ajouter la vue d'essai du composant comme ceci. Et là, il y a une référence à une piste. Donc là, nous pouvons voir que même si je clique sur ceci ici, cette unité me montrera automatiquement, euh, le sérialisé des objets qui correspondent à l'autre type. Euh, ici. Donc je vais choisir celle-ci ici et là. On peut voir qu'on est à gauche en haut, en bas et en vide. Et donc ce que je vais faire ici, c'est qu'ils vont dans les pré fabs et je vais en prendre un ici, que je vais dupliquer. Je vais l'appeler vide et montrer au sujet ce que je vais faire. Voici et désactivez simplement les composants de l'image afin qu'elle ne s'affiche pas. Mais nous gardons la transformation de l'épave avec la taille, ce qui va séparer l'autre objet. Et je vais aussi me faire lire à travers l'opérable ici. Donc, pour ce faire, je vais probablement faire glisser et déposer ça dans la tribu. Tu es là et tu te débarrasses du Perot. Je dirai que cela va briser la brève circonstance, je dirai oui. Et puis je vais cliquer sur Appliquer pour, euh, dater le sujet ici et maintenant dans la vue de piste dans les références ici. Ce que je vais faire ici, c'est dans Dragon a déposé le bas dans le bas, a ri dans la gauche et la droite dans la droite et vers le haut et le M g dans la référence vide comme ceci. Et je vais maintenant me débarrasser des préfets que j'avais dans la vue de l'arbre. Donc, nous avons maintenant tout ce dont nous avons besoin pour commencer à remplir le TRAV. Toi avec les informations que nous avons de la piste, et c'est ce que nous allons faire dans la prochaine affaire. 11. Lire les données et remplir la vue: Donc maintenant que nous avons toutes les références aux objets que nous voulons incolorés, elle a mangé mis en place dans l'éditeur. Je vais revenir dans la classe Track View ici dans la méthode Dans sa méthode, je vais commencer à ajouter les ah, les méthodes de création d'instance. Donc, la première chose que nous voulons faire est de faire une référence à un objet de jeu. Donc je vais faire une référence d'objet de jeu, que je vais appeler ça morne, et ensuite je vais commencer une nouvelle pour chacun. Il est généralement dit là qu'il est préférable d'utiliser une boucle for qu'une pour chaque méthode de performance de boucle . Mais comme cela ne sera en baisse qu'une seule fois, le pour chacun va être juste est bon. Et donc je vais à dio entier la piste qui bat. Donc, pour toutes les informations, toutes les informations de bits que nous avons dans la piste que je veux faire, je veux l'exemple qu'elle a mangé un nouvel objet et là je vais faire référence à un nouvel objet de jeu et je vais faire changer être. Et donc je vais dire que le cas zéro. Donc, si l'information est nulle. Cela signifie que nous voulons faire à gauche et encore, totalement arbitraire. Ont décidé qu'il serait laissé haut taux. Mais ça pourrait être n'importe quoi. Donc je dirai juste G égal à gauche. Et rappelez-vous, la gauche est érigée France chaude. J' ai donc besoin d'accéder à sa propriété d'objet de jeu comme ceci. Et ça va être ça comme ça. Alors et puis je vais juste faire casser comme ça et puis à partir de là encore, suffit d'aller copier la société basée en copie basée sur tous les différents cas. Et puis je dirai que si c'est un ou deux ou libre, alors ça va être laissé vers le bas. Mais à droite et là, au lieu d'ajouter le cas moins un, je vais juste vous utiliser le cas par défaut. Et donc cela signifie que si, pour une raison quelconque, nous avons ajouté certains, comme d'autres nombres entiers, que nous ne le supportons pas, alors nous serions juste par défaut à, euh, l'autre objet et il allait utiliser le objet vide. Donc, ils sont fondamentalement je te fais luv. Je suis en train de créer une nouvelle référence à un objet de jeu et de sélectionner l'objet de jeu basé sur le rythme que j'ai encore et maintenant ce que je dois faire est et simplement à la place, elle a mangé cet objet. Donc je vais faire des objets de jeu à Stan. Elle a mangé, puis passé G, et puis je passerai la transformation. Donc tous disent, prenez la transformation de cet objet comme ceci. Je vais passer la transformation actuelle de cet objet eso dans lequel il pénètre. Stan. Elle détestait dans cet objet comme un enfant de cet objet. Et ceci comme nous l'avons vu, parce que nous avons les, euh, les deux autres composants du groupe de mise en page verticale dans le futur Constant Sezer, cela définira automatiquement la vue. Probablement. Alors essayons ça. Et maintenant on a ça. On a la référence à la piste. Nous avons la référence à tous les autres objets. Et dès que je commence, alors je devrais mettre toutes les informations en place. Probablement maintenant, euh, nous pouvons voir ça, et même si une chose que nous ah, que nous pouvons voir, c'est que ça commence évidemment par le premier objet. Alors ça commence. Il ajoute que le 1er 1 puis le 2e 1 que le 3e 1 et ainsi de suite et ainsi de suite. Et donc le problème que nous avons ici est que la piste est en quelque sorte inversée parce que nous avons commencé ajouter par le bébé par le début. Donc, il y a deux choses que nous pourrions faire Thio Thio pour corriger cela Le 1er 1 est que nous pourrions simplement remplacer le pour chacun avec une boucle complète dans un compte en arrière de la fin au début et l'autre façon que nous pouvons faire et que je vais préférer parce que il lettre un peu de poignée meteo. L' objet que nous avons créé est de prendre une référence. Donc je vais prendre un je vais faire une référence à une transformation et je vais l'appeler la vue, et je vais dire que ça sera égal à cette transformation. Donc, je fais une référence à la transformation de l'objet que je viens de créer. Et maintenant je vais te sauver. Ne t'assois pas comme le premier frère comme ça. Donc, cela signifie que chaque fois que j'ajoute un objet, je l'ajouterai au sommet de la Harrick E. Et donc, en faisant cela chaque fois que je recommence en faisant cela, il l'ajoutera et le prendra au sommet parce que sinon il est ajouté au bas. Donc je l'ajoute et je le prends au sommet. Je ne l'ai pas pris au sommet et ainsi de suite et ainsi de suite. Et donc cela va simplement inverser probablement la piste. Et puis ce que nous pouvons voir est que la piste commencera automatiquement par le pré roll. Ok, donc maintenant je vais simplement réinitialiser la position par défaut de l'hommage à zéro sur Pourquoi ? Alors qu'il commence au tout début de l'écran et eso là à nouveau et ce que nous pouvons voir que ce système de trois D. U. U. Y est yeux pour une belle perd vraiment de dire que nous voulions cet écran pour dire que le 100 pixels du bas de l'écran ou 200 pixels et ainsi de suite et puis on obtient vraiment Teoh pour dire et où la piste va finir sur le, euh résultant deux D écran. Maintenant que nous avons rempli la piste avec ALS, les informations sur les bits que nous voulons avoir la piste pour défiler automatiquement Talwar à la caméra , et c'est ce que nous allons toucher sur la prochaine vidéo 12. Animer le processus de détection de la piste: Donc, maintenant que nous avons la vue de piste remplie avec toutes les informations du modèle de données de piste , nous voulons que la vue d'essai fasse également défiler automatiquement avec le temps. Et pour ce faire, je vais retourner dans la tribu. Vous écrivez ici, et je vais commencer à faire quelques références à sa position et à modifier sa position. La première chose que nous voyons ici est que la position de l'objet ah dans Ah, vous deux D est référencée par une victime, aussi. Mais je ne veux pas manipuler les deux continents. Je veux juste manipuler l'un des deux composants dit pour faire ça, je vais utiliser un peu de, ah, truc, truc, Teoh, faire une référence à la position. Donc je vais faire un vainqueur pour référence que je vais appeler position et donc ce sera un privé par défaut. Et là, je vais ajouter un excès er donc je vais Teoh faire fondamentalement je vais faire une propriété. Donc, là, je vais utiliser un extrait de code pour créer rapidement une propriété et avoir vraiment touché à la création de vos propres modèles de code. Dans ma formation précédente là-bas et fondamentalement, je veux juste dire que je veux en faire un flotteur, et ah, là. Je vais l'appeler position comme ça, mais je ne vais pas utiliser ça. Je vais utiliser. Je vais faire un petit tour où le viable est une victime aussi. Mais l'excès est à flot là-dedans. Chaque fois que nous accédons à la position de valeur, nous voulons retourner la position ma. Et chaque fois que nous modifions la valeur, nous voulons comparer la nouvelle valeur à la position Y. Et si c'est différent de ce que nous voulons assigner le composant y de la position à la valeur Et ce que nous allons faire ici, c'est que chaque fois qu'il ferait cela, nous voulons changer. Nous voulons changer la position de l'épave, transformer. Donc je suis aussi faire Richt transformation ne sont pas ancrés. Position égale et ils sont tous aller dire position. La position ancrée est donc une victime aussi. Et c'est ce que nous voulons mettre à jour. Mais nous ne voulons pas mettre à jour les deux compétences. Nous ne voulons pas gérer le composant X. Nous voulons juste gérer le composant unique. Donc nous faisons un flotteur en arrière, Sœur qui retourne la position Y et qui change la position Y hors de la position ancrée chaque fois que nous ah, chaque fois que nous la changeons. Et maintenant ce que je veux faire est ah, foie commençant chaque fois que je, euh, initialisé la vue, je veux dire que la position est égale à nos trains pour lui point ancré position. Et je le fais Il y a juste pour, ah pour l'initialiser, juste au cas où nous aurions eu un, euh, et compensé le début. Et maintenant, quand je fais ça, je vais aussi ajouter un nouveau, euh, euh, message de mise à jour faisant ça et là je peux dire position moins ical, al, al, juste passé le temps passé. Ne construisez pas un temps et multipliez ce garçon et la valeur arbitraire pour l'instant, avant d'entrer dans le contrôleur de jeu pour définir tout le bon timing basé sur les bits par minutes et ainsi de suite. Donc je vais juste multiplier ça par deux pour l'instant, juste Teoh pour voir ce que ça fait. Ok, donc on voit que ça bouge, mais ça bouge très lentement, donc je vais juste multiplier ça par 20. Ok, donc ça bouge, mais c'est contre le déplacement de divers solitaires, donc je vais juste multiplier ça par 100. Bon, on y va. On a notre aperçu maintenant. Travailler. Et j'aurais pu avoir un multiplicateur de vitesse à la vue de piste. Mais ce n'est pas le but car cette vue de piste ne sera conduite que par le contrôleur de jeu . Et c'est le travail de l'arme là-bas, le contrôleur de jeu à queue. Est-ce que cette vitesse s'éteindrait ? Le voyageur devrait être à l'écart. Et maintenant, la vue de piste elle-même. Et c'est ce que nous allons faire dans la prochaine vidéo alors que nous allons commencer à travailler sur la manette de jeu, fait partie de la manette de vue du modèle. 13. Gérer des entrées personnalisées à l'aide de codes clés: Maintenant que nous avons la tribu dans laquelle vous travaillez, nous voulons commencer à travailler sur la partie contrôleur du contrôleur de vue du modèle, qui va contrôler la vue et le modèle. Dans cet exemple. Il n'a pas besoin de mettre à jour le modèle, qui fait partie du paradigme du contrôleur de vue modèle au tout début est que le contrôleur aurait un jour les données là-bas, il n'a pas vraiment besoin de mettre à jour les données. Il doit simplement lire les données et travailler avec la mécanique, ce qui nous amène en quelque sorte à une version légèrement différente du contrôleur de vue du modèle qui, comme, bien le savoir. Ce que je vais faire ici, c'est créer un nouvel objet de jeu que je vais appeler game plain manager ou un contrôleur. Apportez ceci et je vais réinitialiser sa position sur, et je vais ajouter un nouveau confiant qui dans le gameplay clinique, contrôleur comme celui-ci et ils sont presque à la recherche de repositionner. C' est un script ici dans le dossier du script et je vais le démarrer. Ce ce contrôleur de gameplay première chose à nouveau, aller Teoh à l'espace de nom ici de sorte que les anciennes classes sont dans le même nom, l'espace. Et maintenant je vais commencer à travailler sur cette eso je vais garder le message vers, euh, euh, dans les messages de mise à jour. Eh bien, l' une des règles du contrôleur de jeu ici sera de prendre les entrées assez tôt. Vous voulez prendre la partie entrée de la manette de jeu afin que vous puissiez avoir une manette de jeu totalement indépendante de la plateforme. Et c'est quelque chose que nous allons aborder dans le chapitre suivant pour avoir à gérer les entrées et la gestion multi-plateformes, les entrées multi-plateformes et les paramètres d'affichage. Mais pour l'instant, on va juste mettre les entrées et le contrôleur de gameplay. Et fondamentalement, quand je veux faire à l'intérieur, la mise à jour est de tester si une telle touche sexuelle a été pressée là où un tel bouton a été pressé. Et il y a deux façons de le faire dans une immunité, vous pouvez utiliser les séances d'entrée ou vous pouvez utiliser un code clé. Et ce que je vais faire ici, c'est utiliser un code clé parce qu'il perd d'utiliser un clavier ou un jeu pad aussi bien. Donc je vais commencer à utiliser un tueur et de l'alcool. Ah, c'est là. Des entrées comme ça dans leur propre ajouter un nouveau champ de code clé, que je vais appeler left comme ça dans la même chose. nouveau champ de code clé, Ça va être privé, et ça va être sérialisé. Donc je vais faire ça comme ça, Bruce, Bruce, et donc à gauche, euh, en bas, bas, euh, et juste comme ça. Donc ça allait être mes quatre codes clés pour déclencher ça, mettre ça dans l'inspecteur, puis me perdre à chaque fois que je reviendrai sur le contrôleur Campbell ici. Cela me permet de choisir la clé que je devrais utiliser là-dedans. Je peux utiliser les touches à base de plantes du clavier, mais je pourrais aussi utiliser sur n'importe quel autre pad de jeu, boutons et des choses comme ça. Donc ils vont utiliser la flèche gauche, la chambre basse et l'op Arrgh ! Sur la bonne route comme ça. Et ça va être mon à Butch. Et donc je vais appeler ces entrées comme ça dans leur faire aussi une référence à la piste. Donc là encore, je cherche à reproduire cela et aller visiter la piste. Et là, je vais utiliser un champ sérialisé mis pour une prière. Viable ? Ce sera une piste privée, que je vais appeler piste comme ça, et ça va être la référence à la piste. Et maintenant, parce que c'est la référence à la piste, je veux aussi laisser d'autres composants accéder à la piste, mais je ne veux pas qu'ils puissent la changer. Donc ce que je vais faire ici, c'est créer un excès comme ça et je vais le rendre public et ça va être de type piste. Et je vais aller la piste comme ça avec à la fin du score et là je vais mettre en œuvre contre, mais pas de set. Donc la mise en œuvre vous obtenez comme ça. Je disais juste une piste de retour. Donc, en faisant cela, je suis un peu d'autres commentaires pour accéder à cette piste, mais sans être en mesure de le changer. Et là où c'est quelque chose que nous allons mettre dans l'éditeur et que nous ne pouvons pas changer d'un autre compétent et bien, évidemment changer cela plus tard quand nous voulons laisser le joueur choisir une piste au moment de l'exécution et nous voulons avoir comme, une piste ah vue Pekar être en mesure d'attribuer une nouvelle piste au gestionnaire de gameplay avec le contrôleur de gameplay. Donc ce que je fais aussi Teoh faire ici, c'est qu'ajouter un C'est un autre truc rapide ici, mais je vais ajouter un nouveau, euh, résumé ici. Donc ça me permet d'obtenir, euh , euh, euh, informations sur ce que cette propriété fait ici. Donc je vais juste faire ça. J' aime ça. Et je vais appeler ça l'événement de piste actuel. Et donc si j'entre dans un autre composant que je veux savoir ce qu'est cette propriété de piste, alors je, euh c'est l'information que je peux obtenir. Il est à peu près la même chose est une pointe d'outil ou si quand je fais une pointe d'outil comme ça et dit la pointe de l'outil pour la piste de beats à jouer, je pense que. Et donc cela va apparaître dans l'éditeur et cela apparaîtra dans un comportement moteur chaque fois que je viens sur une propriété. Il y a une autre chose du jour envie de faire juste pour rendre la pensée très serrée. Je vais utiliser une région. Et donc je vais appeler ça la moto comme un comportement, euh, des méthodes comme ça. Et là, je vais mettre fin à la région comme ça. Quel moment nous allons, a ajouté Thio plus tard, c'est une autre région donc et je vais appeler ce gameplay. Donc, je vais diviser cela en différentes régions, régions ou rêverie, Handy comme vous pouvez plus tard aller ici et puis choisir une région. C' est comme des raccourcis qui vous amènent à différentes régions dans le code. Donc ce que je vais faire ici, c'est dire que je veux avoir une nouvelle méthode et je vais appeler, uh, plaque beat comme ça et ça va prendre un et dans le démarrage, qui va être un entier. Et puis je vais ajouter un journal de débogage de cette entrée comme ceci, et maintenant je vais mettre la date. Je vais dire, si l'entrée, c'est la classe d'entrée de l'unité get key down. C' est que cette touche est pressée sur ce cadre et non sur Lee. La première image sur laquelle elle a été pressée et on dit que tous sont laissés comme ça. Ah, alors je veux dire jouer beat in all pass zero, parce que la touche gauche est fondamentalement les matches, l'autre le zéro. Et donc je ferai la même chose avec les quatre. Et donc tous disent un à et trois. Et cela va être vers le bas et, euh, et juste et là je dois aussi ah, mettre fin à cette région avec n région et pas une autre région et région comme celle-ci. Utiliser des régions est très, euh, oui, plein. Chaque fois que vous savez que votre classe va avoir, comme, un set différentes parties de faire sortie est le comportement moteur et le gameplay. Donc là, je veux juste me séparer. Qu' est-ce que la partie d'initialisation ? Et où sont les méthodes spécifiques de gameplay et les membres juste diviser cela en deux régions différentes. Mais c'est juste vraiment juste pour m'aider à eso ça quand dans le mornin développer. Maintenant, je vais retourner dans l'éditeur et là je vais faire référence à une piste. Donc je vais référencer la même piste que j'ai dans le, euh dans l'arborescence comme ça je vais sauver, et ensuite je vais commencer à jouer. Et là, si j'ai appuyé sur les touches fléchées du clavier, alors je peux voir que j'ai cette sortie de débogage ici, et si je double-clique dessus, ça m'emmènera là-dedans. Donc, je peux voir que cela déclenche la méthode de bit de jeu sur l'affichage. Mais la méthode va être la méthode dans laquelle je vais ajouter du code Maura. Mais dans la mise à jour, je n'ai pas tellement de code à ajouter. Je prends juste les entrées et puis le passe dans le bit de jeu. Ceci est en quelque sorte un travail de pré, comme je sais que plus tard, je veux démonter cela dans un autre composant en dehors du contrôleur de gameplay. Maintenant que nous avons ces entrées, nous ces entrées, voulons ajouter les mécanismes qui disent que chaque battement se déplace sur le prochain temps et ensuite nous voulons nous assurer que chaque fois que nous jouons quelque chose, chaque fois que nous appuyons et entrons, nous voulons être en mesure de poser la question est la contribution que nous venons d'appuyer, celle qui doit être pressée maintenant et c'est le X qui fait que nous allons commencer à ajouter dans le prochain pour traiter 14. Mettre en œuvre les techniques de tempo de Gameplay: dans cette vidéo, nous allons commencer à travailler sur la gestion des battements de la manette de jeu. Donc, ce que nous voulons faire, c'est que Teoh garde une trace de quel rythme actuel doit être joué sur eso pour cela. Ce qu'on va faire, c'est qu'on va commencer à travailler ici et on va commencer. Je vais ajouter une nouvelle, euh, méthode ici quand je vais voter, je vais l'appeler prochain beat. Et donc fondamentalement, cette méthode va, euh, passer au rythme suivant chaque fois que je l'appelle ainsi et là je vais aller mettre un journal de débogage là, et je vais simplement déboguer cette tic-disant. Et donc à partir de là, ce que je veux faire, c'est maintenant que je veux revenir dans vos méthodes de comportement et puis dans l'histoire que je veux utiliser invoke ici, je veux utiliser, invoqué, riveté et en vogue, réfuter. Je vais dire que je voulais aller pour le prochain rythme, et là je veux être prudent parce que ce n'est pas si sûr, c'est que nous utilisons du texte, et donc ils sont fondamentalement je vais dire que je voulais être appelé Avery beat. Donc, pour l'instant, faisons un test rapide en disant que nous voulions commencer tout de suite et ensuite nous voulons l'appeler toutes les secondes. Donc, fondamentalement, nous passons un périmètre pour l'intervalle quant à, ah, la fréquence à laquelle nous voulons appeler appeler la répétition à. Alors maintenant, revenons dans l'éditeur et voyons comment cela fonctionne. D' accord ? Et donc ce que nous pouvons voir ici, c'est que nous avons maintenant une tique par seconde. Donc maintenant ce que je veux avoir est un successeur rapide pour thème le nombre de secondes off par temps et le nombre off battements par seconde que je peux utiliser. Et donc ce que je vais faire ici, c'est juste faire quelques ex soeurs. Je vais faire un flotteur public, et je vais aller cette seconde par temps, et cela va devoir obtenir et un ensemble privé pour que je puisse le modifier dans l' instance. Et sur Leigh le lire d'autres classes. Et là, je vais faire la même chose ici avec un autre que je vais aller battre une seconde maintenant je veux initialiser ces valeurs. Et donc pour cela, je vais implémenter la méthode éveillée comme celle-ci et dans éveil, je vais simplement dire secondes par temps égal à piste. Et puis je vais chercher les informations sur les traces de bpm, et je vais les diviser par 60 comme ça. Et donc, en gros, combien de secondes par battement ? C' est le nombre de battements par minute divisé par 60. Et puis combien de battements par seconde, alors cela va être 60 divisé par la piste que BPM. Et donc ce seront des problèmes X rapides que nous pouvons utiliser dans d'autres composants pour simplement se référer au nombre de secondes perbet dans le nombre de bits par seconde. Et là, Maintenant, je peux utiliser ceci et dire que je veux utiliser des battements par seconde. Et en fait, je vais devoir, euh, renommer ça et donc je peux retourner dans l'éditeur et essayer ça. Et là, nous pouvons voir que ça va beaucoup plus vite. Comme nous l'avons dit, le nombre de minutes de Pittsburgh 220. Donc, on a une tique. Chaque seconde de santé. Maintenant, ce que je veux faire est d'implémenter un autre Exeter, ce qui me permet d'accéder au rythme actuel que je devrais jouer. Et pour ce faire, je vais retourner dans le jeu, jouer à la région, et je vais ajouter de nouvelles propriétés. Je vais utiliser ma propriété existe, monsieur, et ça va être de type et blesser, et je vais l'appeler courant comme ça. Et donc ce que nous voyons ici, c'est que quand nous obtenons, alors nous retournons simplement la valeur de la variable. Et quand nous le faisons, A dit, nous nous assurons que les valeurs ont changé et puis nous avons attribué la nouvelle valeur, et je veux aussi voir si nous avons terminé la piste. Donc, chaque fois que nous atteignons la fin de la piste que je veux être en mesure d'annuler l'appel et aussi, euh, arrêter le gameplay probablement dans un certain sens, um, événements plus tard pour dire que nous avons terminé la piste. Donc ce que je vais faire ici, c'est en premier, dire si, euh courant est égal à la piste. Salope. Comte. Alors je veux que Teoh utilise. Annuler, invoquer, et puis je vais passer, euh, la prochaine méthode de beat et je veux aussi stocker une certaine valeur pour dire que si nous avons terminé la piste, puis plus tard, je veux pouvoir Teoh, utiliser un simple booléen vient de dire Si nous avons terminé, alors je ne veux plus prendre les entrées en un. Donc, ce que je vais faire ici est alors eu un taureau privé que je vais aller terminé et là je peux maintenant dire que nous annulons l'appel dans. Ensuite, nous disons terminé équivaut à deux. Et maintenant que je l'ai fait, chaque fois que nous appelons le prochain beat, ce que je vais faire maintenant, je dis courants plus plus et donc ça va incrémenter le rythme actuel à jouer et ensuite ça va déclencher toutes les mécaniques que nous Je veux que Teoh utilise plus tard. Donc maintenant que j'ai ça, je veux faire la correspondance entre les informations de beat et les entrées que nous recevons à partir de la date et c'est ce que nous allons faire dans le prochain pour traiter 15. Metter des commandes d'entrée de graphiques.: Donc maintenant que nous avons le rythme Tickin, ce que nous voulons est la dignité de Teoh, entrées et faire le plus entre les entrées et le rythme actuel. La première chose que je vais faire est de revenir dans le jeu, jouer à la manette ici. Donc ce que je veux faire dans le prochain temps est Teoh savoir si le joueur est joué et si il n'a pas joué alors sauf si c'était un temps vide, alors je veux enregistrer quelques informations manquées. Je veux dire qu'il y avait quelque chose à faire et que nous l'avons manqué. Donc, ce que je vais faire ah est alors revenir ici et aussi ajouter juste avant le terminé je vais aussi ajouter un autre 1,000,000,000 que je vais appeler, joué et comme ça. Et maintenant avec cela, je vais dire que si pas joué comme ça et je vais aussi dire piste et là je vais aller chercher les battements et là je vais passer le rythme actuel. Donc, celui que nous étions censés déclencher ne se souvient pas moins un, qui est la valeur que nous avons assignée les battements vides. Ensuite, je veux enregistrer quelques informations qui disent que nous, euh, que nous avons manqué ce que je vais faire Teoh ici est et dire D bog log Et dans le typique, je vais utiliser la chaîne pour la méthode Mitt dans laquelle nous sommes aller passer par ici. Un mot clé de tout ça et je vais dire,a raté juste pour dire quel morceau a été manqué. Un mot clé de tout ça et je vais dire, Et là, je vais passer le trek qui bat et courant pour que nous sachions si nous avons manqué ah, gauche et droite ou un bouton vers le bas et ainsi de suite. Et comme ça. Et puis maintenant, il veut aussi dire que joué égal tombe comme cet acte d'accusation Teoh pour le dire cette façon. Et maintenant que j'ai ces 1 000 000 000 d'informations jouées, je vais l'utiliser pour filtrer la date afin que je m'assure que nous ne pouvons pas jouer deux fois dans le même temps. Et pour ce faire, il va simplement dire, si joué comme ça ou euh, terminé, terminé, alors je veux simplement revenir et quitter rapidement la mise à jour. Inter. Maintenant que j'ai fait ça, je vais aussi retourner dans la lame être, euh, méthode ici. Et fondamentalement, je vais dire que si pour le truc les grosses et en utilisant le courant, il appelle moins un, alors fondamentalement nous avons joué intempestivement. Nous avons joué comme nous étions censés ne pas jouer. Alors je suis allé Teoh, je veux regarder quelque chose ici. Et je vais aussi dire autre chose ici si et là je vais dire que si cela est égal à l'entrée alors nous avons joué la bonne combinaison dans Sinon cela signifie que nous avons joué. Mais nous avons joué la mauvaise combinaison. Et donc je vais simplement aller Teoh, prendre ça. Euh, ici et je vais simplement Teoh copier le coller comme ça et comme ça et je vais Teoh, utilisez-le ici et là. Je vais, Teoh passe simplement l'entrée comme ça. Et je vais dire que nous avons joué sur la mort vraiment comme ça et dans celui-ci, travailler à dire, joué bien et il allait dire couché et nous allons passer le second argument et nous allons dire attendu ça. Donc nous allons dire que, euh, lequel a été joué dans lequel on s'attendait, et donc nous allons passer les entrées et ensuite euh, le courant que nous avons ici et là. Je vais simplement se prélasser entrée ici. Donc, fondamentalement, si c'était moins un alors et nous avons joué, alors nous disons simplement que nous lame intempestif. Et puis on s'est connecté. Mais sinon, c'est si le courant est l'entrée, Ensuite, nous l'avons joué correctement. Et puis nous affichons lequel a été joué, non ? Et puis si nous, euh autrement, alors nous montrons lequel a été joué, et ensuite lequel était attendu ? Et donc c'est ce que nous avons besoin pour maintenant était pour le contrôleur. Et puis nous ferons plus tard le match avec le voyageur afin que la vue de piste nous montre le joueur s'il a joué le bon rythme ou non. Donc je vais maintenant, Teoh, tester cette règle rapidement. Et le rédacteur en chef et ainsi de suite. On peut voir qu'il nous reste, euh, euh,à jouer en premier, pour que je puisse planifier tout de suite, suite, et ensuite on voit que nous, euh, le message est là. J' ai évidemment manqué beaucoup simplement à cause de la vue de la piste ne joue pas à la bonne vitesse. Si vous vous souvenez. Eh bien, nous avions la vue de la piste pour jouer ici à une vitesse arbitraire. Donc, le contrôleur de jeu et la vue de piste ne sont pas tout à fait. Coulez-le. Et c'est sur ça qu'on va travailler dans la prochaine vidéo. 16. Sync'ing le suivi avec la piste Controller.: Donc, dans cette vidéo, nous allons commencer à lier le contrôleur de gameplay et la tribu You. Et donc la première chose que je veux que Teoh fasse ici est de compléter le contrôleur de jeu et en assurant qu'il s'arrête quand il atteint le bout de la piste. Je voulais que Teoh soit top. Donc ce que je vais faire ici, c'est à un et moi dans un Meritor que je vais utiliser pour un courage dans parce que je veux que je voulais arrêter à la fin, mais je veux Oh, je voulais attendre assez de temps pour que la tribu vous sort complètement de l'écran. Donc ce que je vais faire ici, c'est dire que je voulais que Teoh cède et donc je vais le faire non plus. Ici, hum, va simplement ajouter une attente privée quatre secondes, qui dans l'attente grand-ducale et s'arrête comme ça et dans éveillé, je vais dire Attendre et arrêter est égal à nouveau Attendre pendant des secondes dans tous les passes ici le simplement bits par seconde fois deux afin qu'il attend deux temps et je pourrais juste utiliser des informations différentes . Je pourrais utiliser le nombre de battements dans la patrouille, par exemple, ou quelque chose comme ça. Et donc je vais juste, Ah, venir Mai ici et dire que je voulais rendre le retour, attendez. Nous ne nous sommes pas arrêtés comme ça et puis aussi être activés, égaux chutes de sorte qu'il s'éteint chaque fois qu'il a fini de jouer la piste. Et maintenant ce que je vais faire ici est alors dit qu'après qu'il est terminé ici, alors je vais dire Stocké co routine dans leur tous Passer le poids et arrêter, attendre et arrêter Faire ici. Donc maintenant que j'ai ceci, je veux être en mesure de lier entièrement la vue de piste avec le contrôleur de gameplay. Et chaque fois que vous avez deux composants dans une architecture dépendante, vous avez un composant qui dépend de l'autre. Vous ne voulez pas avoir de dépendance mutuelle, et c'est toujours mieux quand vous n'avez pas de compétence pour assigner un autre ou en créer un autre . Et c'est toujours mieux quand on dit simplement qu'il va chercher l'autre, et qu'il finira par s'abonner à ses événements et à des choses comme ça. Donc, pour cela, ce que je vais faire est que dire que le contrôleur de traction de jeu est très probablement le seul composant qui sera toujours là. C' est celui qui fait référence à la piste, et c'est celui qui dictera la plupart du comportement du gameplay. Donc c'est celui que nous voulons avoir tout le temps. Et donc ce que je vais faire ici est alors dit que je veux que ce soit un singleton, et ce singleton est un autre paradigme qui est totalement compatible avec n'importe quel autre modèle de design . Les modèles réellement conçus sont comme des références, et vous pouvez les modifier et les faire en quelque sorte comme vous le souhaitez, tout comme les modèles et tout comme l'architecture fixe que vous ne pouvez pas modifier. Donc ce que je vais faire ici est et utiliser un rapide, ah, bon extrait que j'utilise ici et qui me perdra de dire que je veux un contrôleur de gameplay , qui est l'instance. Et donc si nous avons un coup d'oeil rapide à ce qu'il fait ici, c'est qu'il fait référence à une référence statique c' à un contrôleur de gameplay, et chaque fois que nous y accédons, chaque fois que nous allons accéder à l'instance, alors il va aller. Et s'il n'existe pas déjà, s'il n'est pas déjà assigné, il va aller chercher un dans la scène. S' il n'en trouve pas un qui va entrer, créez-en un. Et donc en créer un ici n'a pas tellement de sens parce qu'il nécessite d'avoir des informations telles que la piste qu'il doit jouer et ainsi de suite. Donc je vais simplement me débarrasser de tout ça et dire simplement, hum, ils sont là que je veux que Teoh se débarrasse de ça et ils sont tous juste dire, si l'instance est non, alors je veux aller la trouver dedans et c'est tout. Et puis je veux le rendre. Et c'est Ah, c'est comme quelque chose très commun mieux. Ah, ici. Et ce que je veux faire ici, c'est dire que je veux que l'instance égalise cela dans éveillé. Et donc c'est ce que je vais faire ici, ce que vous avez et une chose importante est, ah, ah, quand vous faites ah, unique dense est de s'assurer que chaque fois que vous déchargé, vu, par exemple parce que vous chargez une autre scène ou quelque chose, alors vous voulez vous assurer que lorsque vous faites indistrait et en fait j'ai utilisé sur désactivé, Mais je vais faire sur détruire à la place sur détruit que l'instance est égale non. Et puis je vais juste utiliser le trait de soulignement pour que je puisse me débarrasser de la SEC, c'est que je ne veux pas qu'un autre composant puisse changer l'instance pour le contrôle de jeu des contrôleurs de jeu mis en place dans la scène. Revenons vite dans l'éditeur et assurez-vous que tout passe se passebien. se Et maintenant ce que je veux faire, c'est retourner dans la piste, vous ici. Et donc au lieu d'avoir à assigner une visionneuse de piste pour assigner le contrôleur de gameplay à la vue de piste et dire, Hé , vue de piste, c'est le contrôleur de gameplay et d'autre part, je serais faire comme un contrôleur Gimpel. Ceci est une vue de piste. Je ne veux pas avoir à faire tout ce genre de reliures. Je voulais être automatique. Donc, pour ce faire, je sais que le voyageur n'existera jamais sans un contrôleur de pari, ce qui peut ne pas être vrai. Dans l'autre sens, nous pouvons avoir un contrôle de jeu joué sans vue de piste, mais pas l'inverse Donc ce que je vais faire ici est alors dire que je veux initialiser chaque fois que je vais aller dans l'initialiser ici, Je vais commencer. Et par exemple, au lieu d'initialiser la vue de piste avec sa propre propriété de piste, je vais aller dire piste point d'instance de contrôleur de gameplay. Et donc il va aller trouver l'instance du contrôle de gameplay et ensuite trouver la propriété de piste . Et donc qui me perdent de simplement me débarrasser de cette référence de piste manuelle que j'avais jusqu' ici. C' est assez, euh, très utile de faire semblant parce que je ne veux pas avoir à gérer différentes informations de piste. Un dans le lecteur, vous un dans la manette de jeu et ainsi de suite. Dans la méthode, je suis allé à référencer la taille d'une vue d'enchère et la taille hors de l'espacement parce que je sais que les battements dans la tribu vous pouvez être disposés avec un certain espacement. Alors quoi ? Je vais à ah, à faire. Voici et simplement dire qu'après cette position ici, je vais ajouter un flotteur que je vais aller battre, Avez-vous taille dans un autre que je vais aller espacement comme ça. Et chaque fois que j'ai initialisé cela, alors je vais dire plus grande taille égale et je vais simplement aller Teoh, utiliser le vide et je vais aller chercher l'information directe ici et la hauteur du rectangle de la transformation vide. Et là, je vais dire que l'espacement est égal à obtenir composant et ils vont passer. Euh, ici, Vertical seulement dehors. Doug. Espacement comme ça. Et je sais que j'ai évité un petit groupe de mise en page parce que j'ai ajouté avant que vous avez besoin de la prise de disposition verticale du composant. Et donc je prends l'espacement ici. J' attribue à l'autre l'espacement, valeur d' inondation et la grande taille de vue. Et donc fondamentalement, ce que je dois faire ici est alors dire qu'en utilisant le temps Delta, Je veux aussi multiplier ce Mon Je vais réellement multiplier cela par le contrôleur Campli. Instance Dodd secondes par temps. Et je veux utiliser les secondes burbey parce que je vais utiliser le temps, la vue, vue, taille et l'espacement ensemble, qui est la quantité de traduction que je dois faire chaque fois que nous avançons d'un temps. Et donc je suis allé multiplier cela par le nombre de secondes par battement afin que nous puissions multiplier cette mordure le temps Delta. Et donc nous devrions obtenir une traduction qui suit la, euh, la vitesse appropriée. Et donc je vais simplement dire, euh, euh, Biddy Assize plus espacement. Maintenant, revenons au théâtre ici et jetons un coup d'oeil sur la composante tracteur ici et nous pouvons voir que le Tribune ne fait référence qu'à une piste. Il trouvera automatiquement le contrôleur de jeu et se liera à lui et trouvera sa propriété de piste . Et maintenant, si nous faisons cela, nous devrions voir que cela prend probablement, et la vitesse que je devrais être capable d'obtenir beaucoup plus de bonnes combinaisons qu'avant. Donc maintenant, au lieu de compter sur la console pour voir si nous avons joué correctement ou non, nous allons réellement faire en sorte que la vue de piste s'affiche et change l'affichage pour chaque temps. Quand, chaque fois que nous les jouons correctement ou pas, et c'est ce que nous allons faire dans la prochaine vidéo 17. Ajouter les commentaires visuels de Gameplay.: dans cette vidéo. Nous allons maintenant Teoh un jour, la vue avec les événements de la manette de gameplay. Et je vais rester loin des événements Sea Sharp pour ce cours de formation, et je vais aborder cela dans un chapitre plus tard. Mais fondamentalement, ce que nous voulons faire ici est que nous voulons essayer vue d'être averti de pour recevoir une notification du contrôleur de gameplay chaque fois que nous avons joué quelque chose, chaque fois que nous avons manqué quelque chose et afin qu'il puisse mettre à jour le courant vous et donner commentaires au joueur quant à savoir si son, euh, manqué ou joué probablement ou juste joué le mauvais. Mais ce que Teoh va faire ici, c'est d'abord, on va retourner dans la vue de piste, et je vais ajouter un nouveau, euh en orme. Et je vais ajouter une Nina Teoh. Euh, ici, je vais faire une publication, euh, que je vais appeler Trigger. Je vais faire ce déclencheur pour qu'il puisse être de différents types. C' est tout simplement manqué, bien ou mal. Donc, en gros, on va avoir des informations très basiques à dire. Quand avec joué quelque chose de bien ou de mal ou quand nous avons manqué quelque chose et puis je vais ajouter une nouvelle méthode ah ici, je vais faire une nouvelle méthode publique pour que le contrôleur de jeu puisse y accéder et ça va être, ah, évitez la méthode. Et je vais appeler ça trigger beat view comme ça, et ça va prendre un entier pour l'index parce que c'est ce que le contrôleur de jeu sait sur, euh, euh, tout ce qu'il sait c'est ah, le rythme actuel. Et alors quoi ? On veut que Teoh passe ça, et on veut aussi passer un déclencheur. Donc, je vais simplement passer le type de déclenchement ici comme ça. Et là, je vais faire un interrupteur et un interrupteur basé sur la gâchette. Pensez cela et dites déclencheur de cas manqué. Et ils sont ce que je veux faire comme ça au cas où déclencher des fouets droit manqués et déclencher droite et casser au cas où à nouveau, déclencher mal et ceci et casser à nouveau. Maintenant, ce que je dois faire est de référencer le composant d'image que je connais existe sur les vues de rythme les pré fabs que nous avons plutôt tiré dans la tribu. Eh bien, ce que je vais faire Teoh est ici et venir ici. Et je vais ajouter une nouvelle liste hors compartiment d'image comme celui-ci, et je vais appeler ce bit views. Et quand je viens à l'initialisation ici, ce que je vais ah, pour adhérer, c'est une, euh, euh, utilisation d' enchères équivaut à une nouvelle liste d'images comme celle-ci. Et là, vous voyez que j'ai déjà l'objet de référence dentée créé, et je crée une référence, une référence directe au composant de transformation. Mais le composant de transformation a déjà un successeur sur son très facile d'accès. Donc, à la place, ce que je vais faire ici est et dire que cela va être une image et là je vais dire, obtenir le composant et passer l'image comme ceci et dire que je veux maintenant prendre cet objet de jeu créé par l'instance , et puis je veux accéder au composant image qui est dessus à partir de là. Quand je peux dire est point de vue euh, transformer dot set s premier frère. C' est très facile. Et maintenant avec cela, je peux aussi dire biff views cette annonce et puis je peux passer la vue qui est maintenant de type, uh, composants d'image. Et donc là, je construis cette liste de composant d'image à partir de là, et c'est donc très facile pour moi de faire, de le référencer plus tard. Et donc ce que je vais faire ici, c'est que dire que si nous avons manqué, alors je veux aller dans le grand énorme et je veux passer, euh, l'index que je suis donné et puis je veux changer le composant de couleur qui change le de cet objet. Et là, je vais juste un collier aussi gris. Disons que nous les avons rendus gris quand ils nous manquent, et ensuite je vais faire la même chose ici. Quand on les aura bien, je dirai « jaune ». Et quand nous, euh, jouons le mauvais morceau, utilisons un autre coin que nous n'avons pas utilisé jusqu'à Forest, qui est un Salyan. Et donc avec tout cela, la vue de piste est maintenant capable d'excès de vues de bits individuels qui ne sont que des composants d'image , les composants d'image qui sont sur les pré-fabs et de changer les couleurs en fonction d'un type de déclenchement , qui est une année que nous avons ajoutée ici. Et maintenant, je peux revenir dans la manette de jeu et dans la manette de gameplay. Ce que je veux faire est de créer une référence rapide à la tribu vous. Donc je vais venir ici et je vais ajouter une nouvelle, uh, uh, traîné votre référence comme ça et je vais appeler cette vue Trey, et ensuite je vais aller dans le but de sillage ici et dans le réveil. Ce que je vais faire Teoh ici, c'est qu'il s'agit d'une vue de piste égale à trouver le type d'objectif dans la vue d'essai passée de Hollinger. Donc fondamentalement, il dit trouver la première vue d'essai qui a été définie dans la scène et que cela et ensuite ce que je peux aussi faire est ah alors dire si, euh, piste vue ici, je vais le dire juste sinon, essayer vue, qui dit fondamentalement, si trav vous est non, alors je veux émettre un avertissement de journal de débogage afin que, euh, euh, nous sachions qu'il n'y a pas de vue de piste dans la scène, donc je vais juste dire, Euh, aucune vue de Frank n'a été trouvée et la scène actuelle comme ça. Très bien, donc c'est Ah, c'est juste un moyen sûr de le faire dans un chapitre ultérieur. Altach sur C événements pointus et tout touchant sur toutes les liaisons que nous pouvons que nous pouvons faire dans . Fondamentalement, ce que nous voudrions réellement faire est d'utiliser des événements pour que la vue de piste s'abonne au contrôleur de jeu et que le contrôleur de jeu Newton et n'ait même pas à connaître la vue de piste. C' est donc ce qui est encore mieux à faire. Mais dans un contrôleur de vue de modèle approprié, il est ah, habituel que le contrôle et les nouvelles sur la vue parce que c'est leur ancien serré les uns aux autres. Et maintenant que j'ai ça, ce que je vais faire est de venir dans le prochain morceau ici où nous voyons que nous avons raté le morceau et qu'ils sont aussi une piste pour vous, et ensuite je vais juste aller chercher le message. Il y a une méthode que j'ai ici Trigger vous offre et puis tous passer le courant, qui est le rythme actuel que nous étions censés jouer puis passer. Trev, tu essaies de voir la brume de déclenchement comme ça, et ensuite je ferai la même chose quand on jouera aussi les battements ici. Donc, évidemment, quand on joue intempestivement, alors il y a là. Il n'y a rien à montrer. Et puis peut-être que nous aimerions que vous montriez autre chose. Mais c'est quelque chose que je vais parler jeune plus profondément dans le chapitre ultérieur que de gérer l'autre. Les récompenses visuelles et aussi les récompenses audio que vous voulez donner au joueur chaque fois que le joueur joue correctement ou non. Et ainsi de suite là-dedans. Je vais simplement dire que nous avons joué le bon, euh, peu ici et là. On a joué le mauvais rythme ici. Et donc ce qui se passe ici, c'est que nous exagérons la trace de vous chaque fois que nous nous initialisons. Ensuite, nous trouvons le premier voyageur que nous avons confiné dans la scène. Et puis chaque fois que nous jouons, nous allons quand déclencher la grande vue. Et donc le Trevi recevra. Ce message recevra ce charbon à cette méthode et en fonction du type de déclencheur, il changera la couleur de manière appropriée hors du temps actuel. Alors vérifions ça. Et il l'avait fait fonctionner. Une des choses qui est assez agréable que nous pouvons faire à ce sujet est que nous pourrions aussi dire que chaque fois que nous manquons, par exemple, je pourrais ajouter une pause de tourbière d, Alors laissez-moi juste faire cela. Et puis cela signifie que chaque fois que nous frappons cette pause de débogage, cela va mettre l'éditeur en pause, tout comme si j'avais cliqué sur le bouton de pause ici. Mais il le fait automatiquement ici. Et donc ce que nous pouvons voir ici, c'est que fondamentalement la zone de déclenchement qui s'afficherait est juste ah, un peu. Il y a juste un peu de décalage. Et nous l'avons juste placé d'une manière qui indique au joueur que son intention de jouer était. En fait, il vient de perdre le sien qui vient de manquer. Et c'est donc Ah, c'est l'erreur que nous avons eue. Donc ils vont juste bouger ça à propos de la taille de la gâchette ? Euh, hein. Comme ça. Et donc je suppose que maintenant je devrais pouvoir, euh, jouer euh, avec ce manque de quoi que ce soit. Alors on y va. Et en fait, ce que nous venons de voir est assez intéressant, c'est que comme vous pouvez le réaliser, là où j'ai un peu, c'est que je l'ai joué, et pourtant ça se passe, Ah, sur une pause. Et c'est ah, tout simplement quand nous Ah, c'est tout simplement à propos de ça. Là, vous pouvez voir que quand je joue le rythme, je ne mets pas le joué viable à vrai, ce qui fait qu'il a effectivement dit que nous n'avons pas joué chaque fois que nous atteignons la prochaine rencontre. Et donc ce que je dois faire ici est alors dire joué égal vrai dans le jeu, mais la méthode. Donc, je l'ai fait. J' ai fait ça. Et maintenant, ce que je vais aussi faire est simplement de me débarrasser de tous ces, hum, hum, les journaux de bogues ici car je n'en ai plus vraiment besoin pour l'instant. Donc je vais être vraiment horrible et je vais retourner dans la vue du plateau ici. Je vais me débarrasser de ce livre en D ici et maintenant je vais juste essayer cela à nouveau et que nous pouvons voir que c'est bien joué. Manqué, manqué. Essayons de le jouer mal là. Je monte, en haut, en haut, en haut, haut, en haut. Donc, et je fais juste pour qu'on puisse voir ça quand je me lève. Puis le tourna le jaune, ce qui signifie qu'ils ont été joués probablement, et d'autres façons ils tournent Zion, ce qui signifie qu'il y a eu mal joué, et si je ne fais rien que le train gris, ce qui signifie qu'ils ont été manqués. Donc c'est tout pour l'instant. Et dans la prochaine vidéo, je vais juste faire un résumé rapide sur DSM sur tout ce que nous avons touché sur la formation et je vais aussi aborder la formation future qui vient sur le même projet pour aller plus loin. 18. Rétrospective du cours: donc, pour finir, passons en revue ce que nous avons appris tout au long de ces dernières. Bien sûr, nous avons eu un aperçu rapide des différents modèles de contrôleur de vue comme modèle de conception. Tel est le contrôleur de vue du modèle, ainsi que la vue du modèle, modèle de vue et le présentateur de vue du modèle. Et puis nous sommes entrés dans cela et avons vu comment nous avons mis cela dans l'unité. Nous avons vu que la classe de modèle Onley stocke les données et qu'il est noté pour le rendre et comportement moteur, qu'il pourrait être une classe à base de plantes sérialiser et que dérivant des offres d'objet à base de plantes de script est la commodité de gérer les données dans l'éditeur et que c'est, ah, beaucoup plus facile que d'avoir à gérer Jason ou la civilisation XML. Nous avons abordé la classe de vue et nous avons vu que les quelques classes n'affichent que les données, il est donc logique d'en faire un comportement moteur. Il pourrait également s'agir d'un comportement U. Y, et nous avons vu qu'il se met à jour lorsque les données changent ou qu'il peut également recevoir des événements du contrôleur. Ensuite, nous avons touché le contrôleur lui-même. Nous avons vu que seul est destiné à manipuler les données qu'il peut gérer l'entrée, bien que dans un scénario multi-plate-forme. Il est recommandé de séparer les entrées du contrôleur et de pouvoir référencer la vue , bien qu'il soit préférable que la vue s'abonne à ses événements. Et c'est quelque chose que nous allons aborder dans un chapitre plus tard sur Lean All nous avons vu que modèles de design ne sont que des suggestions là-bas, juste des modèles religieux. Et cela étant dit, nous avons vu que nous pourrions créer notre propre modèle ici, où le modèle ne met pas à jour la vue. C' est le contrôle de ces mises à jour. La vue et la vue vont simplement prendre les données du contrôleur et se mettre à jour à partir des événements envoyés à partir du contrôle ou ainsi pour aller plus loin. Vous pouvez vous abonner à ma newsletter et recevoir des offres exclusives. Union rejoint également Unity Workshops Group sur Facebook, et si vous voulez me suivre sur Twitter, c'est chez Unity Coach sur Facebook. Même chose à vous avez besoin d'un entraîneur ou Facebook qui vient dernier. Vous avez besoin d'un coach et dans la communauté d'unité, ou comme réponses collab et Connect, vous me trouverez avec AD. Vous avez besoin d'un coach ou d'une chambre d'amis jusqu'à la prochaine fois. Merci d'avoir regardé 19. Refactoring.: dans cette vidéo, je voudrais apporter si vous corrigez les scripts que nous avons terminé avec la fin de ce chapitre. La première chose que je voulais souligner si vous Dan, avec le projet final, vous avez probablement déjà remarqué ces correctifs ici. Mais rappelez-vous que j'utilisais ici dans l'inspecteur Gooey Méthode A utilisait ce Teoh, en fait empêcher l'erreur que nous avons eu quand nous avons créé une nouvelle piste dans l'inspecteur. Et en fait, j'ai réalisé que l'initialisation de cette liste ici au tout début se débarrasse simplement de cette erreur dans exactement beaucoup plus simple. Teoh, fais-le comme ça. Une autre chose que je veux que Teoh souligne. Et cela est en fait porté à mon attention par un des étudiants ici sur vous mannequins, grâce à John qui, euh, en fait, a souligné que les secondes par enchère et les bits par seconde ou en fait échangé. Donc, même si nous les avons utilisés aux bons endroits dans les bonnes voix qui disent que cela fonctionne, probablement le sens qu'ils le transporteur est en fait balayé. Et si nous y pensons comme des bits par seconde est en fait combien de battements en une seconde, donc ce n'est pas 60 divisé par le nombre de bits par minute. Mais c'est le nombre de bits par minute divisé par 60 et la voix off dit que les secondes par enchère sont en fait l'inverse. Si c'était la valeur qui était réellement inversée, alors je changerais simplement le signe ici, et ce serait assez simple. Le truc, c'est que c'est juste le nom, le viable, donc tout va bien. Mais le nom de ces variables et ceux d'accès sont en fait trompeurs. Donc nous voulons renommer ceci et donc pour ce faire, ce que je vais faire ici est d'utiliser une des fonctionnalités qui est assez puissante dans moderne développé qui s'appelle un réflecteur. Donc, je peux faire un clic droit sur cela et aller dire, renommer quand vous faites cela sur quelque chose qui est réellement privé ou qui est dans cette classe . Donc, par exemple, si je devais faire ça sur, euh, l'instance, alors je comprendrais ça. J' obtiendrais un simple renommage parce que cela n'existe pas et ne peut pas exister parce que simplement parce que c'est privé, donc il ne peut exister nulle part ailleurs. Dans une autre classe, et puis je peux simplement renommer ceci et il va renommer toutes les occurrences du nom de cette chose. Mais là, ce qui est un peu différent, c'est que cela est probablement utilisé ailleurs, et c'est en fait. Nous savons qu'il est utilisé dans la vue de piste où nous l'utilisons ici comme secondes par enchère ici. Donc, ce que nous pouvons faire ici, c'est que je vais vraiment fermer ce fichier ici, et ce que nous pouvons faire ici, c'est simplement mettre en évidence ceci et ensuite simplement aller dire renommer. Et quand je fais cela, alors au lieu de simplement renommer tous les organes, est dans la finale. Cela va soutenir cette boîte de dialogue où je peux changer le nom et ils sont ce que je vais faire ici n'est pas si je change le nom pour les bits par seconde que je finirais avec deux propriétés portant le même nom, et alors je ne pouvais plus renommé l'autre. Donc ce que je vais faire ici à partir de maintenant est simplement à une fin de partition à celui-ci, et je vais aussi copier ceci et puis je vais dire, OK, maintenant je peux le faire ici je vais continuer, renommer et ensuite je vais renommez ces deux secondes par battement comme ça. Et puis maintenant je peux aller renommer l'autre et le renommer en battements pour seconde. Eh bien, comme ça. Et puis il va renommer cela partout dans le feu, mais en fait partout dans les solutions que nous trouvons à nouveau dans la vue de piste. Ensuite, nous pouvons voir ça où j'avais des secondes par battement. J' ai maintenant des bits par seconde à la place, et c'est pourquoi j'ai fermé le fichier avant de le faire avant, parce que si je l'avais fait avec l'Open final, il l'aurait fait. Mais alors, très four. Vous voulez que Thio Thio ait pas Teoh pour enregistrer le fichier qu'il a changé. Si je l'avais fait comme en fait, je peux le faire. Juste Teoh démo le but ici si je fais ça ici comme ça et je l'ai renommé avec comme quelques traits de soulignement derrière. Ce que vous pouvez voir ici, c'est qu'il a changé ce fichier, mais il ne l'a pas enregistré, donc si je ne retourne jamais dans l'unité aidée ou très souvent, vous finirez avec une erreur parce vous enregistrez le fichier que vous avez modifié. Mais vous n'avez pas sauvé tous les autres incendies qu'il est modifié automatiquement. Donc, et aussi quand la chose Nice est que vous pouvez réellement le faire dans n'importe quel fichier. Donc, vous n'avez pas à faire ça dans cette belle ici. Vous pouvez aussi le faire. Je crois qu'ils sont là. Je peux simplement aller dire renommer, puis supprimer les scores en et ensuite il va le faire dans l'inverse. C' est donc, Ah, une fonctionnalité très puissante que je voulais montrer ici dans cette vidéo. Encore une fois, grâce à John, qui l'a fait remarquer, c'était mon erreur. Eso Il est maintenant fixé et je vais réduire aussi les fichiers du projet final et les pères des autres chapitres de cette formation aussi bien. Comme toujours, Merci beaucoup pour vos commentaires. Et merci d'avoir regardé