Menu
CoddyTech

Tworzenie obiektów według timera

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

Spawner, który co kilka sekund tworzy coś, potrzebuje timera. Time.deltaTime to czas, jaki trwała ostatnia klatka, więc dodawanie go do pola przy każdym wywołaniu Update() daje liczbę sekund, które upłynęły. Gdy suma osiągnie interwał, utwórz obiekt i odejmij interwał od sumy.

Ta fontanna wyrzuca kroplę wody co pół sekundy:

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= interval zachowuje resztę: jeśli klatka zakończyła się po 0.51 sekundy, odliczanie kolejnej połowy sekundy zaczyna się od 0.01, a krople pojawiają się w równym rytmie. timer = 0 odrzuciłoby tę resztę, więc każda kropla pojawiałaby się nieco później, a opóźnienie narastałoby podczas długiej gry. timer jest prywatny, ponieważ nie trzeba go ustawiać w Inspectorze.

challenge icon

Wyzwanie

Średni

Upuszczaj pudełko co interval sekund (2 w Inspectorze).

  1. Dodaj pola float timer; i int count;. W Update() dodaj Time.deltaTime do timer.
  2. Gdy timer >= interval, wywołaj Instantiate(boxPrefab, transform.position, Quaternion.identity); i odejmij interval od timer.
  3. Następnie zwiększ count o 1 i wypisz w logu "Box " + count.

Naciśnij „Graj”: pudełko spada co 2 sekundy, a Console zlicza Box 1, Box 2. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // Co interval sekund: upuść pudełko i zapisz w logu "Box 1", "Box 2"...
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity