In diesem Teil von DeVRSmU3D geht es (endlich!) auch mal ans Coden! Wir erstellen unter anderem einen Highscore Bildschirm, welcher die aktuelle Punktzahl anzeigt und natürlich die berühmten Pacman Dots die unserer Held einsammeln muss!
Vorherige Teile Teile:
Tag 2: Unity und unser erstes Level
Als erstes bauen wir ein ganz einfaches Highscore-System und anschließend erstellen wir die „Dots“ die uns Punkte geben sollen. Dieses mal habe ich das ganze mehr als Video Tutorial gemacht, da man viele Dinge dort leichter erklären kann und ihr dem Tutorial meiner Einschätzung nach auch besser folgen könnt, als in einem langen Text. Alle entwickelten Scripte findet ihr unterhalb dieses Videos mit zusätzlichen Kommentaren, welche nochmal wiederholen oder vertiefen wie das Script funktioniert.
Als erstes die Highscore Komponente:
using UnityEngine; using System.Collections; public class pacmanHighscore : MonoBehaviour { // Speichert die aktuelle Punktzahl private int highscore; // Referenz zum angezeigten Text private TextMesh textMesh; // Use this for initialization void Start () { //Bei Spielstart, setze Punktzahl auf 0 highscore = 0; //Finde die Komponente die den Text anzeigen soll textMesh = GetComponentInChildren(); // Initialisiere den Text textMesh.text = "Score: "+highscore; } // Update is called once per frame void Update () { } //Wird von einer anderen Komponente aufgerufen, wenn sie den Highscore erhöhen soll public void AddHighscore(int score){ //Wir wollen nur positive Highscores durchlassen if(score<0){ score = 0; } //erhöhe den Highscore. += bedeutet, dass der Wert zum aktuellen Wert addiert wird highscore+=score; // Ändere den angezeigten Text textMesh.text = "Score: "+highscore; } }
Und hier ist auch die „Dots“-Komponente:
using UnityEngine; using System.Collections; public class pacmanDot : MonoBehaviour { // Referenz auf die Highscore Komponente // Static heißt, wenn es mehrere Objeklte mit dieser Komponente gibt, // dann teilen sich alle Instanzen diese eine Variable private static score; // Wie viele Punkte soll dieses Objekt geben? // Public Variabeln können über den Inspector gesetzt werden public int points = 100; // Use this for initialization void Start () { // Nur wenn noch keine andere Komponente nach der Highscore Komponente gesucht hat, // suchen wir danach if(score==null){ score = GameObject.FindObjectOfType(); } } // Wird ausgeführt, sobald der am selben GameObject hinzugefügte Collider getriggered wird. // Is Trigger muss dafür aktiv sein void OnTriggerEnter(Collider c){ // Wir prüfen ob der Spieler das Objekt getriggerd hat, // denn das Objekt wird auch getriggert wenn z.B. ein Geist durch den Dot läuft. // Der Name unserers Spieler-Objekts muss von // "XY Player Controller" in "Player" geändert werden. if(c.gameObject.name.Equals("Player")){ // Rufe die AddHighscore Methode auf, um Punkte zu addieren score.AddHighscore(points); // Zerstöre den aktuellen Dot, sodass er nicht mehrmals eingesammelt wird. Destroy(this.gameObject); } } }
So das war es! Wenn ihr noch fragen habt, schreibt sie einfach in die Kommentare und ich werde versuchen sie so gut wie möglich zu beantworten. Ich hoffe euch gefällt diese Tutorial-Reihe! Im nächsten Teil werden wir die Geister AI schreiben, ich hoffe ihr freut euch drauf! Vergesst nicht euch für den VR Jam anzumelden, wenn ihr Teilnehmen wollt, es gibt top Preise zu gewinnen!
So langsam bekomme ich auch Lust mein Glück mal zu versuchen.
Wirklich gute Reihe die Du hier gestartet hast !
Danke Daniel . . . !
Immer wieder gerne!
Ein wirklich hilfreiches TuT ! als absoluter anfänger ( mit nem haufen motivation was eigenes zu machen sobald die consumer version drausen ist xD ) ein super einstieg ! hast du vor in zukunft noch mehr tuts zu machen ? wäre echt super ! ^^ lg
Bitte! :) Im nächsten Tutorial werden wir die Künstliche Intelligenz der Gegner einbauen!
DK2 ist gerstern bei mir eingetroffen..Hurra! Läuft aber noch nicht viel….
[…] Das eigene Virtual Reality Spiel mit Unity3D – Tag 3: Highscores, Dots und Coding?! […]
Ich finde deine Reihe hier Klasse und wollte mir nicht nehmen lassen es auch mal auszuprobieren.
Aber gerade stehe ich vor einem kleinen Problem.
Bin ich einfach zu doof den 3D Text zu finden, oder gibt es den in der Free Version gar nicht? :)
VG.
Hey,
TextMeshes sollte es auch in der Free Version geben. Wenn du es in der Hierarchie unter „Create“ nicht findest, kannst du aber auch ein neues leeres GameObject zu erstellen (Create Empty GameObject) und dann kannst du rechts im Inspector auf „Add Component“ und dann nachh „Text Mesh“ Filtern.
Bei neueren Unity Version ist die Gruppierung in den Menüs leicht anders.
Ich hoffe das konnte helfen,
Mit bestem Gruß,
Daniel