Punktestand anzeigen
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 2 von 56.
Der text eines Textes ist eine Zeichenfolge, daher muss eine Zahl zu Text werden, bevor sie angezeigt wird. Wenn man sie mit + an eine Zeichenfolge anhängt, geschieht das: "Wood: " + wood ergibt Wood: 12, wenn wood den Wert 12 hat, und wood.ToString() ergibt 12. Das int allein passt nicht: woodText.text = wood; schlägt mit CS0029 fehl: Cannot implicitly convert type 'int' to 'string'.
Die Zahl liegt in einem int-Feld, und der Text zeigt sie nur an. Eine Methode schreibt den Text anhand des Felds neu; jede Änderung an der Zahl ruft sie auf, ebenso wie Start(), damit im ersten Frame der tatsächliche Wert angezeigt wird und nicht der im Inspector eingegebene. Hier hackt Space 3 Holzstämme:
public TMP_Text woodText;
private int wood;
void Start()
{
ShowWood();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
wood += 3;
ShowWood();
}
}
void ShowWood()
{
woodText.text = "Wood: " + wood;
}Der Text ändert sich nur, wenn sich wood ändert. Ihn bei jedem Update() neu zu schreiben, würde genauso aussehen, aber 60-mal pro Sekunde ohne Grund eine neue Zeichenfolge erstellen. Die Reihenfolge ist wichtig: Würde ShowWood() vor wood += 3 aufgerufen, würde der alte Zählerstand angezeigt, also einer hinterherhinken.
Aufgabe
EinfachDer Gärtner pflanzt Bäume. Mit den Pfeiltasten bewegst du ihn, und mit der Leertaste pflanzt er einen Setzling, solange noch Samen übrig sind, wie es Gardener.cs bereits tut. Zeige die Anzahl auf dem Bildschirm an; in der Szene sind seedsText und treesText verknüpft:
seedsTextzeigt die übrigen Samen an, zum BeispielSeeds: 4, undtreesTextdie gepflanzten Bäume, zum BeispielTrees: 1.- Beide Anzeigen sind ab dem ersten Frame und nach jedem Pflanzen korrekt. Im Inspector erhält der Gärtner 5 Samen, obwohl in der Szene noch
Seeds: 10undTrees: ?steht. - Schreibe eine Methode, die beide Anzeigen setzt, und rufe sie überall dort auf, wo sie benötigt wird.
Drücke Play, pflanze, bis die Samen aufgebraucht sind, und klicke dann auf Check.
Probier es selbst
using UnityEngine;
using TMPro;
public class Gardener : MonoBehaviour
{
public float speed = 4f;
public int seeds = 10;
public GameObject saplingPrefab;
public TMP_Text seedsText;
public TMP_Text treesText;
private int trees;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
{
Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
Instantiate(saplingPrefab, spot, Quaternion.identity);
seeds--;
trees++;
}
}
// Zeige Seeds: und Trees: in den beiden Textfeldern an, und zwar ab dem ersten Frame.
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer4Szenen und Level
Eine Szene ladenDas Level neu startenNächstes LevelZwischen Szenen beibehaltenRückblick: Levelauswahl10Projekt: 3D-Plattformer
Der ParcoursBewegliche Plattformen2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank