Menu
CoddyTech

Wywoływanie

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 22 z 71.

Invoke("Explode", 3f) wywołuje własną metodę skryptu Explode jeden raz, za 3 sekundy, a kod znajdujący się za nią wykonuje się od razu. Unity wyszukuje metodę na podstawie jej nazwy podanej jako ciąg znaków, a metoda nie przyjmuje żadnych parametrów. Ta bomba wybucha 3 sekundy po rozpoczęciu gry:

void Start()
{
    Invoke("Explode", 3f);
}

void Explode()
{
    Debug.Log("Boom");
    Destroy(gameObject);
}

Ponieważ nazwa jest ciągiem znaków, kompilator nie może jej sprawdzić. Invoke("Explod", 3f) kompiluje się, a 3 sekundy później Unity wyświetla w dzienniku komunikat Trying to Invoke method: Bomb.Explod couldn't be called. zamiast doprowadzić do wybuchu. C#-owe nameof rozwiązuje ten problem: nameof(Explode) to ciąg znaków "Explode", utworzony przez kompilator na podstawie sprawdzonej przez niego nazwy, więc literówka wewnątrz niego powoduje błąd kompilacji widoczny przed uruchomieniem gry. Napisz Invoke(nameof(Explode), 3f);.

challenge icon

Wyzwanie

Łatwy

Spraw, aby platforma rozpadła się chwilę po tym, jak gracz na nią wyląduje.

  1. W OnCollisionEnter, gdy collision.gameObject.CompareTag("Player"), wywołaj Invoke(nameof(Fall), delay);.
  2. Dodaj void Fall(): ustaw body.isKinematic = false; i zaloguj Crumble!.

Naciśnij „Graj” i wejdź na platformę: sekundę później opadnie. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Crumble : MonoBehaviour
{
    public float delay = 1f;
    Rigidbody body;

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision collision)
    {
        // Gdy gracz wyląduje: spraw, by platforma spadła po delay sekundach
    }

    // Fall(): włącz fizykę platformy i wypisz Crumble! w logu
}

Wszystkie lekcje w sekcji Fizyka i rozgrywka

Poćwicz samodzielnie: Edytor online Unity