Prefab dan Instantiate
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 62 dari 85.
prefab adalah GameObject yang disimpan sebagai templat: seret sebuah objek dari Hierarchy ke jendela Project, lalu Unity menyimpannya bersama semua komponennya dan nilai Inspector-nya. prefab itu sendiri tidak berada di scene. Skrip mendapatkan prefab melalui sebuah field, seperti referensi lainnya: deklarasikan public GameObject parcelPrefab; lalu seret prefab ke field tersebut di Inspector.
Instantiate(prefab, position, rotation) membuat salinan prefab di scene dan mengembalikannya. Drone pengantar ini menjatuhkan sebuah paket di posisinya sendiri setiap kali Space ditekan. Quaternion.identity berarti tanpa rotasi:
public GameObject parcelPrefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(parcelPrefab, transform.position, Quaternion.identity);
}
}Setiap kali tombol ditekan, satu objek lagi ditambahkan ke Hierarchy, dengan nama Parcel(Clone). prefab tetap seperti semula, jadi setiap salinan dimulai dengan nilai yang sama. GetKeyDown penting di sini: dengan GetKey, menahan Space selama setengah detik akan menjatuhkan sekitar 30 paket, satu per frame.
Tantangan
SedangBuat setiap klik memunculkan koin di atas pemain.
- Tambahkan field
public GameObject coinPrefab;. Scene mengisinya dengan prefab Coin. - Di
Update(), saatInput.GetMouseButtonDown(0), panggilInstantiate(coinPrefab, transform.position + new Vector3(0, 2, 0), Quaternion.identity);.
Tekan tombol “Main”, bergeraklah dan klik: koin muncul di atas pemain setiap kali kamu mengeklik. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
public class CoinDropper : MonoBehaviour
{
public float speed = 4f;
// coinPrefab: field GameObject publik yang diisi dengan 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);
}
// Klik: munculkan koin 2 unit di atas pemain
}
}
Semua pelajaran di Dasar-Dasar Scripting Unity
1Dasar-Dasar C# di Unity
Halo, UnityVariabelDesimal Memerlukan fTeks di ConsoleVariabel yang Menyimpan NilaiIf dan ElseBandingkan AngkaUlasan: Pengumpul Koin7Perulangan dan method
Ulangi dengan forPerulangan di dalam perulanganTulis methodMethod yang Mengembalikan NilaiarrayUlasan: Tangga10Menemukan Benda
Cari Berdasarkan NamaTagCari Berdasarkan TipeReferensi Lebih Baik daripada FindNull di UnityRangkuman: Koin Terdekat13Proyek: Hindari Balok
Karakter PelariBalok dari Langit2Buat Bergerak
Tempatkan KubusBergerak Setiap FrameBerputar Setiap DetikKemudikan dengan TombolRangkuman: Kemudikan Kubus5Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak AntarobjekVector3 adalah StructRangkuman: Pilot Drone8GameObjects dan Komponen
Referensi di InspectorAmbil KomponenKomponen yang HilangTambahkan KomponenRequireComponentTampilkan dan SembunyikanRingkasan: Sakelar Lampu11Prefab dan Pemunculan
Prefab dan InstantiateMunculkan dengan TimerMunculkan dalam GridDaftar ObjekAmbil Kembali Objek TerbaruHancurkanPemunculan AcakUlasan: Kembang Api6Transformasi dan Hierarki
Objek Induk dan AnakKibarkan BenderaSkalaMelihat BendaBergerak Menuju TitikRekap: Bulan yang MengorbitLatihan sendiri: Playground Unity