Prefaby i Instantiate
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 62 z 85.
Prefab to obiekt GameObject zapisany jako szablon: przeciągnij obiekt z Hierarchy do okna Project, a Unity zapisze go wraz ze wszystkimi komponentami i wartościami z Inspector. Sam prefab nie znajduje się w scenie. Skrypt pobiera go za pomocą pola, tak jak każdą inną referencję: zadeklaruj public GameObject parcelPrefab; i przeciągnij prefab na to pole w Inspectorze.
Instantiate(prefab, position, rotation) tworzy kopię prefabu w scenie i ją zwraca. Ten dron dostawczy upuszcza paczkę w swojej aktualnej 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 od tych samych wartości. W tym przypadku GetKeyDown ma znaczenie: przy użyciu GetKey przytrzymanie Spacji przez pół sekundy spowodowałoby upuszczenie około 30 paczek, po jednej na klatkę.
Wyzwanie
ŚredniSpraw, aby każde kliknięcie powodowało pojawienie się monety nad graczem.
- Dodaj pole
public GameObject coinPrefab;. Scena przypisze do niego prefabrykowaną monetę. - W
Update(), przyInput.GetMouseButtonDown(0), wywołajInstantiate(coinPrefab, transform.position + new Vector3(0, 2, 0), Quaternion.identity);.
Naciśnij „Graj”, poruszaj się i klikaj: za każdym razem nad graczem pojawi się moneta. Następnie naciśnij „Sprawdź”.
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
}
}
Wszystkie lekcje w sekcji Podstawy skryptów w Unity
1Podstawy C# w Unity
Witaj, UnityZmienneLiczby dziesiętne wymagają fTekst w konsoliZmienne, które pamiętająIf i elsePorównywanie liczbPowtórka: Zbieracz monet4Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski z nazwamiPrzyciski myszyPowtórka: naładowany skok7Pętle i metody
Powtarzaj za pomocą forPętle wewnątrz pętliNapisz metodęMetody, które zwracają wynikTablicePowtórka: schody10Wyszukiwanie obiektów
Wyszukiwanie po nazwieTagiWyszukiwanie po typieReferencje lepsze niż wyszukiwanieNull w UnityPowtórka: najbliższa moneta13Projekt: Unikaj bloków
BiegaczBloki z nieba2Wpraw to w ruch
Umieść sześcianPoruszaj w każdej klatceObracaj co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian5Wektory
Dodawanie wektorówKierunkiPrzestrzeń lokalna i globalnaPrędkość po przekątnejOdległość między obiektamiVector3 to strukturaPodsumowanie: pilot drona8Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePowtórka: włącznik światła11Prefaby i tworzenie obiektów
Prefaby i InstantiateTworzenie obiektów według timeraTworzenie obiektów w siatceListy obiektówCofnij najnowszyNiszczenieLosowe tworzenie obiektówPowtórka: fajerwerkiPoćwicz samodzielnie: Edytor online Unity