Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Gesundheit wurde in einigen der frühesten Videospiele der Welt entwickelt und ist ein gängiger Mechanismus, der in vielen der beliebtesten Titel von heute fortbesteht. Die Gesundheit ermöglicht es, komplexe Kampfmechaniken einzusetzen, Spielerfortschritte zu erstellen und Ihr Spiel intuitiver zu gestalten. Aber wie fügt man seinen eigenen Spielen ein Gesundheitssystem hinzu?

Unity3D macht es einfach, 2D-UI-Elemente zu 3D-Spielen hinzuzufügen, also ist es ein großartiger Ort, um zum ersten Mal Gesundheitsbalken zu erkunden.

Was du lernen wirst

Oberflächlich betrachtet mag dieses Projekt nicht kompliziert erscheinen. Trotzdem müssen Sie einige wichtige Unity3D-Codierungskonzepte verstehen, um eine funktionierende Gesundheitsleiste zu erstellen. Das bedeutet, dass es beim Durchlaufen dieses Projekts viel zu lernen gibt, darunter:

instagram viewer
  • So erstellen Sie 2D-UI-Elemente/Sprites in Unity3D.
  • So bearbeiten Sie Spielobjektkomponenten mit Code.
  • So teilen Sie Variablen zwischen Skripts in Unity3D.

Schritt 1: Richten Sie Ihre Szene ein

Bevor Sie mit dem Codieren Ihrer Gesundheitsleiste beginnen können, benötigen Sie eine Szene mit einem Spielermodell, auf das sie angewendet werden kann. Um loszulegen, können Sie unserer folgen physikbasierter Unity3D-Charakter-Controller-Leitfaden um ein Spielermodell mit grundlegenden Steuerelementen zu erstellen.

Nachdem ein Szenen- und Spielermodell vorhanden ist, ist es an der Zeit, ein UI-Element hinzuzufügen. Klicken Sie mit der rechten Maustaste in das Hierarchiefenster und wählen Sie es aus Benutzeroberfläche > Bild. Dadurch werden zwei neue Elemente in Ihrer Hierarchie erstellt: ein übergeordnetes Canvas-Objekt und ein untergeordnetes Image-Objekt. Ändern Sie den Namen des untergeordneten Objekts in Healthbar. Wählen Sie mit dem Inspektor eine Breite, Höhe und Position für Ihre Gesundheitsleiste aus.

Sie können ein etwas größeres UI-Bild hinzufügen, dessen Farbe auf Schwarz eingestellt ist, um als Hintergrund/Rahmen für die Gesundheitsleiste zu fungieren. Stellen Sie einfach sicher, dass es sich in der Hierarchie über der Gesundheitsleiste befindet, sodass es dahinter angezeigt wird.

Dieses UI-Element dient als Grundlage für Ihre Gesundheitsleiste, aber Sie benötigen auch ein Sprite, um es zu animieren. Wechseln Sie zum Bereich Projekt, klicken Sie mit der rechten Maustaste, und wählen Sie aus Erstellen > 2D > Sprites > Quadrat.

Wählen Sie die Gesundheitsleiste aus der Hierarchie aus und ziehen Sie das soeben erstellte Sprite in das Auswahlfeld für das Quellbild im Inspektor. Sie können sich auch ändern Bildtyp zu gefüllt, Füllmethode zu Horizontal, und Ursprung füllen nach links. Wenn Sie nun Ihr Spiel ausführen und die verwenden Menge füllen Schieberegler sollten Sie sehen, wie Ihr Gesundheitsbalken schrumpft und wächst.

Wenn Sie das UI-Komponentenmenü nicht sehen können, gehen Sie zu Fenster > Paket-Manager, und stellen Sie sicher, dass Sie das 2D-Paket installiert haben.

Schritt 2: Fügen Sie eine Zustandsvariable hinzu

Es würde nicht viel Sinn machen, einen Gesundheitsbalken ohne eine Gesundheitsvariable zu erstellen, die seinen Zustand diktiert. Andere Skripte müssen auf diese Variable zugreifen können, und es ist sinnvoll, sie an einer zentralen Stelle zu platzieren. Fügen Sie es dem Character Control-Skript als öffentliches Float hinzu:

öffentlichschweben SpielerGesundheit = 1.0f;

Die Verwendung eines Floats für diese Variable bedeutet, dass Sie problemlos einen beliebigen Prozentsatz von 0 bis 100 darstellen können, um ihn mit der Variable Fill Amount des Gesundheitsbalken-UI-Bildes abzugleichen. Eine PlayerHealth von 0,5f entspricht beispielsweise 50 % der Breite der Gesundheitsleiste.

Schritt 3: Geben Sie Variablen zwischen Skripts in Unity frei

Variablen arbeiten normalerweise innerhalb ihrer eigenen Funktionen und Skripte. Dies macht sie für andere Funktionen und Skripte unzugänglich, es sei denn, Sie unternehmen Schritte, um dem Code mitzuteilen, wo die Variablen zu finden sind, mit denen Sie arbeiten möchten.

Erstellen Sie zunächst eine neue Skriptdatei mit dem Namen Health, in der der Code untergebracht ist. Dieses Skript können Sie per Drag & Drop auf das im ersten Schritt erstellte Healthbar-UI-Element ziehen. Der folgende Code geht in die Funktion void Update() ein.

Dieser Prozess beginnt damit, das Spielobjekt zu finden, das die Variable besitzt. In diesem Fall ist es das Character_Model-Objekt:

GameObject Character_Model = GameObject. Finden("Charakter_Modell");

Als nächstes ist es an der Zeit, die Skriptkomponente zu finden, die die Variable enthält, mit der Sie arbeiten müssen.

Character_Control character_Control = Character_Model. GetComponent();

Und schließlich können Sie die spezifische Variable extrahieren, nach der Sie suchen. In diesem Fall ist es die playerHealth-Variable, die Sie Ihrem Charakter-Controller hinzugefügt haben. Weisen Sie dies einer Float-Variable innerhalb des aktuellen Skripts mit dem Namen „currentHealth“ zu.

aktuelleGesundheit = character_Control.playerHealth;

Es sind nur wenige Codezeilen erforderlich, um die benötigte Variable zu erhalten, und Sie können diese Methode jederzeit anwenden, wenn Sie auf die Gesundheit Ihres Spielers zugreifen müssen. Ihr Code sollte so aussehen, wenn Sie fertig sind:

verwenden System. Sammlungen;
verwenden System. Sammlungen. Generisch;
verwenden UnityEngine;
verwenden UnityEngine. Benutzeroberfläche;

öffentlichKlasseGesundheit: MonoBehaviour
{
öffentlichschweben aktuelleGesundheit;

LeereStart()
{
}

LeereAktualisieren()
{
GameObject Character_Model = GameObject. Finden("Charakter_Modell");
Character_Control character_Control = Character_Model. GetComponent();
aktuelleGesundheit = character_Control.playerHealth;
}
}

Schritt 4: Programmieren Sie das UI-Gesundheitsbalken-Spielobjekt

Nachdem Sie nun ein UI-Element für die Gesundheitsleiste erstellt haben und Zugriff auf die Variable für die Spielergesundheit haben, ist es an der Zeit, dass sie zusammenarbeiten. Fügen Sie zunächst eine private statische Variable hinzu, die die Bildkomponente Ihrer Gesundheitsleiste enthält:

Privatgeländestatisch Bild Healthbar;

Dieser Variable können Sie dann innerhalb der Funktion void Start(), die nur einmal ausgeführt wird, die Bildkomponente zuweisen.

Gesundheitsbalken = GetComponent();

Nachdem Sie nun alle Variablen eingerichtet haben, können Sie den Code aus dem vorherigen Schritt verwenden, um die Füllbreite des UI-Objekts der Zustandsleiste festzulegen. Hier müssen Sie keine Umrechnung vornehmen; Sowohl die Gesundheit des Spielers als auch die Füllmenge der Gesundheitsleiste sind Float-Variablen.

Healthbar.fillAmount = aktuelleGesundheit;

Wenn dieser Code vorhanden ist, füllt sich Ihre Gesundheitsleiste basierend auf der Gesundheitsvariablen, die im Character_Control-Code gefunden wird, nach oben und unten. Das ist allerdings etwas langweilig und könnte definitiv etwas Farbe vertragen.

Beginnen Sie, indem Sie eine neue Farbe hinzufügen, um die Gesundheitsleiste hellgrün zu machen, wenn der Spieler viel Gesundheit hat.

Farbe grünGesundheit = neu Farbe(0,6 f, 1, 0,6 f, 1);

Als nächstes fügen Sie eine if-Anweisung hinzu, um zu prüfen, ob die Gesundheit des Spielers über 0,3f liegt, also 30 % oder mehr. Wenn es höher als 0,3f ist, stellen Sie den Gesundheitsbalken so ein, dass er der Farbe entspricht, die Sie gerade hinzugefügt haben. Wenn es unter 0,3f liegt, färben Sie den Gesundheitsbalken rot.

Wenn (aktuelleGesundheit >= 0,3 f) {
Healthbar.color = greenHealth;
} anders {
Healthbar.color = Farbe.rot;
}

Schritt 5: Testen des Codes

Wie Sie aus dem vollständigen Code unten sehen können, ist dieses Projekt recht einfach, wenn alles zusammen ist. Natürlich benötigen Sie jedoch eine Möglichkeit, Ihren Code zu testen.

verwenden System. Sammlungen;
verwenden System. Sammlungen. Generisch;
verwenden UnityEngine;
verwenden UnityEngine. Benutzeroberfläche;

öffentlichKlasseGesundheit: MonoBehaviour
{
Privatgeländestatisch Bild Healthbar;
öffentlichschweben aktuelleGesundheit;

LeereStart()
{
Gesundheitsbalken = GetComponent();
}

LeereAktualisieren()
{
GameObject Character_Model = GameObject. Finden("Charakter_Modell");
Character_Control character_Control = Character_Model. GetComponent();
aktuelleGesundheit = character_Control.playerHealth;
Healthbar.fillAmount = aktuelleGesundheit;

Farbe grünGesundheit = neu Farbe(0,6 f, 1, 0,6 f, 1);

Wenn (aktuelleGesundheit >= 0,3 f) {
Healthbar.color = greenHealth;
} anders {
Healthbar.color = Farbe.rot;
}
}
}

Sie können dem Character_Control-Skript eine einzelne Codezeile hinzufügen, um das Testen zu ermöglichen. Immer wenn der Spieler die W-Taste drückt, um sich vorwärts zu bewegen, wird eine kleine Menge Gesundheit entfernt. Sie können denselben Code zu jedem Skript mit Zugriff auf die playerHealth-Variable hinzufügen, um dieselben Ergebnisse zu erzielen:

SpielerGesundheit -= 0,001 f;

Sie können auch erwägen, Ihrem Unity-Projekt einzigartige Assets hinzuzufügen. Du kannst Finden Sie kostenlose Unity-Assets über das Web, was Ihnen die Möglichkeit gibt, Ihr Projekt zu beleben, ohne Geld ausgeben zu müssen.

Erstellen von Gesundheitsbalken in Unity3D

Ihr Spiel nimmt Gestalt an, jetzt wo Sie einen Gesundheitsbalken für Ihren Charakter haben. Es gibt noch viel zu tun, aber Sie sollten jetzt über einige der wichtigsten Fähigkeiten verfügen, die Sie benötigen, um echte Fortschritte zu erzielen. Natürlich schadet es nie, mehr Anleitungen zu lesen.