Menu
CoddyTech

Variablen, die sich etwas merken

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 5 von 85.

Unity ruft Update() in jedem Frame auf, und jeder Aufruf beginnt von vorn: Eine Variable, die innerhalb einer Methode erstellt wird, wird verworfen, wenn die Methode endet. Daher kommt dieser Zähler nie über 1 hinaus:

void Update()
{
    int frames = 0;
    frames++;
}

frames++ addiert 1 – die Kurzform für frames += 1. Im nächsten Frame wird jedoch erneut int frames = 0; ausgeführt und der Zähler beginnt von vorn.

Damit ein Wert von einem Frame zum nächsten erhalten bleibt, erstelle die Variable innerhalb der Klasse, aber außerhalb jeder Methode. Eine Variable an dieser Stelle ist ein Feld: Sie bleibt so lange bestehen wie das Objekt, und jede Methode der Klasse kann sie verwenden.

int frames = 0;

void Update()
{
    frames++;
}

Jetzt zählt frames weiter: 1, 2, 3 und so weiter – in jedem Frame um eins mehr.

challenge icon

Aufgabe

Einfach

Lass die Pflanze weiterwachsen.

  1. Schneide die Zeile int frames = 0; aus dem Inneren von Update() aus.
  2. Füge sie oberhalb von void Update() innerhalb der Klasse ein, damit frames zu einem Feld wird, das seinen Zählerstand speichert.

Drücke „Spielen“: Die Pflanze wächst mit jedem Frame ein wenig höher. Drücke anschließend „Prüfen“.

Probier es selbst

using UnityEngine;

public class Grower : MonoBehaviour
{
    void Update()
    {
        int frames = 0;
        frames++;
        transform.localScale = new Vector3(1, 1 + frames * 0.01f, 1);
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground