Menu
CoddyTech

Zmienne, które pamiętają

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 5 z 85.

Unity wywołuje Update() w każdej klatce, a każde wywołanie zaczyna od nowa: zmienna utworzona wewnątrz metody jest usuwana po jej zakończeniu. Dlatego ten licznik nigdy nie przekroczy 1:

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

frames++ dodaje 1 — to krótszy zapis frames += 1. Jednak w następnej klatce znów wykonywane jest int frames = 0; i liczenie zaczyna się od nowa.

Aby zapamiętać wartość z jednej klatki do następnej, utwórz zmienną wewnątrz klasy, ale poza wszystkimi metodami. Taka zmienna to pole: istnieje tak długo jak obiekt, a każda metoda klasy może jej używać.

int frames = 0;

void Update()
{
    frames++;
}

Teraz frames wciąż zlicza: 1, 2, 3 i tak dalej — o jeden więcej w każdej klatce.

challenge icon

Wyzwanie

Łatwy

Spraw, by roślina rosła dalej.

  1. Wytnij linię int frames = 0; z wnętrza Update().
  2. Wklej ją nad void Update(), wewnątrz klasy, aby frames stało się polem, które zapamiętuje swoją wartość.

Naciśnij „Graj”: roślina rośnie nieco wyżej w każdej klatce. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

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

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity