Menu
CoddyTech

Переменные, которые запоминают

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 5 из 85.

Unity вызывает Update() каждый кадр, и каждый вызов начинается заново: переменная, созданная внутри метода, удаляется, когда метод завершается. Поэтому этот счётчик никогда не поднимется выше 1:

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

frames++ добавляет 1 — это краткая запись frames += 1. Но на следующем кадре снова выполняется int frames = 0;, и счёт начинается заново.

Чтобы помнить значение от одного кадра до следующего, создай переменную внутри класса, но вне всех методов. Такая переменная называется полем: она существует, пока существует объект, и её может использовать каждый метод класса.

int frames = 0;

void Update()
{
    frames++;
}

Теперь frames продолжает считать: 1, 2, 3 и так далее — на единицу больше с каждым кадром.

challenge icon

Задание

Легко

Сделай так, чтобы растение продолжало расти.

  1. Вырежи строку int frames = 0; из Update().
  2. Вставь её выше void Update(), внутрь класса, чтобы frames стало полем, которое запоминает своё значение.

Нажми «Играть»: с каждым кадром растение становится немного выше. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

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

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity