Prefabrykaty i Instantiate
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 48 z 67.
Prefab to obiekt GameObject zapisany jako szablon: przeciągnij obiekt z okna Hierarchy do okna Project, a Unity zapisze go wraz ze wszystkimi komponentami i wartościami z Inspektora. Sam prefab nie znajduje się w scenie. Skrypt otrzymuje go przez pole, tak jak każdą inną referencję: zadeklaruj public GameObject parcelPrefab; i przeciągnij prefab na to pole w Inspektorze.
Instantiate(prefab, position, rotation) tworzy kopię prefabu w scenie i ją zwraca. Ten dron dostawczy upuszcza paczkę w swojej pozycji za każdym razem, gdy naciśniesz spację. Quaternion.identity oznacza brak obrotu:
public GameObject parcelPrefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(parcelPrefab, transform.position, Quaternion.identity);
}
}Każde naciśnięcie dodaje kolejny obiekt do Hierarchy o nazwie Parcel(Clone). Prefab pozostaje bez zmian, więc każda kopia zaczyna z tymi samymi wartościami. GetKeyDown ma tu znaczenie: przy użyciu GetKey przytrzymanie spacji przez pół sekundy spowodowałoby upuszczenie około 30 paczek, po jednej na klatkę.
Wyzwanie
ŚredniStrzałki już poruszają graczem. Spraw, by każde kliknięcie tworzyło monetę nad nim:
- Dodaj publiczne pole typu
GameObjecto nazwiecoinPrefab. Scena przypisze do niego prefabrykowaną monetę Coin, gdy tylko pole będzie dostępne. - Po kliknięciu lewego przycisku myszy utwórz jedną kopię monety 2 jednostki nad graczem, bez obrotu.
Naciśnij Play, poruszaj się i kliknij kilka razy, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
public class CoinDropper : MonoBehaviour
{
public float speed = 4f;
// coinPrefab: publiczne pole GameObject, do którego przypisano prefab Coin
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position -= new Vector3(speed * Time.deltaTime, 0, 0);
}
// Kliknięcie: utwórz monetę 2 jednostki nad graczem
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy skryptów w Unity
1Twój pierwszy skrypt
Witaj, UnityUmieść sześcianPoruszaj się w każdej klatceObracaj się co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian2Inspektor
Pola inspektoraSerializeFieldLiczby zmiennoprzecinkowe i MathfAtrybuty inspektoraPodsumowanie: Winda5Transformacje i hierarchia
Rodzice i dzieciSkalaPatrz na obiektyPoruszanie się w kierunku punktuPodsumowanie: Księżyc krążący po orbicie3Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski o nazwachPrzyciski myszyPowtórka: naładowany skok6Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePodsumowanie: włącznik światła9Prefabrykaty i tworzenie obiektów
Prefabrykaty i InstantiateTworzenie obiektów według timeraTworzenie obiektów w siatceListy obiektówNiszczenie obiektówLosowe tworzenie obiektówPowtórka: fajerwerki