• Tidak ada hasil yang ditemukan

Memodifikasi Komponen Objek

Setelah Anda memiliki referensi ke objek lain, bekerja dengan komponen objek itu hampir sama persis dengan menggunakan komponen lokal. Satu-satunya perbedaan adalah bahwa sekarang, daripada hanya menulis nama komponen, Anda perlu menulis variabel objek dan titik di depannya, seperti:

// This accesses the local component, not what you want transform.Translate(0, 0, 0);

// This accesses the target object, what you want targetObject.transform.Translate(0, 0, 0);

Mengubah Objek Target Ikuti langkah-langkah ini untuk memodifikasi objek target dengan menggunakan skrip:

1. Buat proyek atau scene baru. Tambahkan kubus ke scene dan posisikan di (0, -1, 0).

2. Buat skrip baru dan beri nama TargetCubeScript. Tempatkan skrip di Kamera Utama.

Di Visual Studio, masukkan kode berikut di TargetCubeScript:

// This is the game object you want to access private GameObject target;

// This is here for reference void Start() {

target = GameObject.Find("Cube");

} void Update() {

target.transform.Translate(.05f, 0f, 0f);

target.transform.Rotate(0f, 0f, 1f);

target.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);

}

3. Simpan skrip dan jalankan scene. Perhatikan bahwa kubus bergerak meskipun skrip diterapkan ke Kamera Utama.

satu bola chaos dan menggandakannya empat kali. Bagaimana jika Anda ingin membuat perubahan pada semua bola kekacauan pada saat yang sama, di mana pun mereka berada di scene atau proyek Anda? Melakukannya bisa jadi sulit—terkadang sangat sulit. Prefab membuatnya sangat mudah, meskipun. Bagaimana jika kamu memiliki game yang menggunakan tipe musuh orc? Sekali lagi, Anda dapat mengatur satu orc dan kemudian menggandakannya berkali-kali, tetapi bagaimana jika Anda ingin menggunakan orc lagi di scene lain? Anda harus benar-benar membuat ulang orc di scene baru. Namun, jika orc itu adalah Prefab, itu akan menjadi bagian dari proyek dan dapat digunakan kembali di sejumlah scene. Prefab adalah aspek penting dari developeran game Unity.

Prefab adalah objek kompleks yang telah dibundel sehingga dapat dibuat ulang berulang kali dengan sedikit kerja ekstra. Dalam jam ini, Anda akan mempelajari semua tentang mereka, dimulai dengan apa adanya dan apa yang mereka lakukan. Dari sana, Anda akan belajar cara membuat Prefab di Unity. Anda akan belajar tentang konsep pewarisan.

Anda akan menyelesaikan pelajaran dengan mempelajari cara menambahkan Prefab ke scene baik melalui editor dan melalui kode.

Dasar-dasar Prefab

Seperti disebutkan sebelumnya, prefab adalah jenis aset khusus yang menggabungkan objek game. Tidak seperti objek game normal yang hanya ada sebagai bagian dari satu scene, prefab disimpan sebagai aset. Dengan demikian mereka dapat dilihat dalam tampilan Proyek dan digunakan kembali berulang kali di banyak scene. Anda dapat, misalnya, membangun objek kompleks, seperti musuh, mengubahnya menjadi Prefab, dan kemudian menggunakan Prefab itu untuk membangun pasukan. Anda juga dapat membuat salinan Prefab dengan kode.

Ini memungkinkan Anda untuk menghasilkan jumlah objek yang hampir tak terbatas saat runtime. Bagian terbaiknya adalah objek game atau koleksi objek game apa pun dapat dimasukkan ke dalam Prefab. Kemungkinannya tidak terbatas!

Latihan Pikiran

Jika Anda kesulitan memahami pentingnya prefab, pertimbangkan ini: Pada jam sebelumnya, Anda membuat game Chaos Ball. Saat membuat game itu, Anda harus membuat satu bola chaos dan menggandakannya empat kali. Bagaimana jika Anda ingin membuat perubahan pada semua bola kekacauan pada saat yang sama, di mana pun mereka berada di scene atau proyek Anda? Melakukannya bisa jadi sulit—terkadang sangat sulit. Prefab membuatnya sangat mudah, meskipun. Bagaimana jika kamu memiliki game yang menggunakan tipe musuh orc? Sekali lagi, Anda dapat mengatur satu orc dan kemudian menggandakannya berkali-kali, tetapi bagaimana jika Anda ingin menggunakan orc lagi di scene lain? Anda harus benar-benar membuat ulang orc di scene baru. Namun, jika orc itu adalah Prefab, itu akan menjadi bagian dari proyek dan dapat digunakan kembali di sejumlah scene. Prefab adalah aspek penting dari developeran game Unity.

Terminologi Prefab

Anda perlu mengetahui beberapa terminologi tertentu yang terkait dengan bekerja dengan prefab. Jika Anda familiar dengan konsep pemrograman berorientasi objek, Anda mungkin melihat beberapa kesamaan:

Prefab: Prefab adalah objek dasar. Itu hanya ada dalam tampilan Proyek. Anggap saja sebagai cetak biru.

Instance: Instance adalah objek sebenarnya dari prefab dalam sebuah scene. Jika prefab adalah cetak biru untuk mobil, sebuah instance adalah mobil yang sebenarnya.

Jika sebuah objek dalam tampilan Scene disebut sebagai prefab, itu benar-benar sebuah instance prefab. Contoh frase dari prefab identik dengan objek prefab atau bahkan tiruan dari prefab.

Instansiasi: Instansiasi adalah proses membuat turunan dari prefab. Instantiate adalah kata kerja, digunakan seperti ini: "Saya perlu membuat instance dari prefab ini."

Warisan: Dengan Prefab, warisan tidak sama dengan warisan pemrograman standar.

Dalam hal ini, istilah pewarisan mengacu pada sifat di mana semua contoh dari sebuah prefab terkait dengan prefab itu sendiri. Ini dibahas secara lebih rinci nanti dalam jam ini.

Struktur Prefab

Disadari atau tidak, Anda telah bekerja dengan Prefab. Controller karakter Unity adalah Prefab. Untuk membuat instance objek prefab ke dalam scene, Anda hanya perlu mengklik dan menyeretnya ke tempatnya dalam tampilan Scene atau tampilan Hierarchy. Saat melihat tampilan Hierarchy, Anda selalu dapat mengetahui objek mana yang merupakan instance dari prefab karena terlihat berwarna biru. Ini bisa menjadi perbedaan warna yang halus, jadi perhatikan bahwa Anda juga dapat mengetahui bahwa suatu objek adalah Prefab dengan melihat bagian atas Inspector. Sama seperti objek kompleks non-Prefab, instance kompleks dari pabrikan juga memiliki panah yang memungkinkan Anda untuk memperluasnya dan memodifikasi objek di dalamnya.

Gambar 1.46 Menambahkan instance prefab ke sebuah scene.

Gambar 1.47Munculnya instance prefab di Inspector.

Karena prefab adalah aset milik proyek dan bukan scene tertentu, Anda dapat mengedit prefab dalam tampilan Project atau tampilan Scene. Jika Anda mengedit instance prefab dalam tampilan Scene, Anda harus menyimpan perubahan kembali ke prefab dengan mengklik tombol Apply di kanan atas Inspector. Sama seperti objek game, prefab bisa rumit.

Anda dapat mengedit elemen anak dari prefab dengan mengklik panah di sisi kanan prefab.

Mengklik panah ini akan memperluas objek yang akan diedit. Mengklik lagi memadatkan Prefab lagi.

Gambar 1.48 Memperluas konten prefab dalam tampilan Project.

Bekerja dengan Prefab

Menggunakan prefab bawaan Unity itu bagus, tetapi seringkali Anda ingin membuatnya sendiri. Membuat Prefab adalah proses dua langkah. Langkah pertama adalah membuat aset pabrikan. Langkah kedua adalah mengisi aset dengan beberapa konten.

Membuat Prefab sangat mudah. Cukup klik kanan pada tampilan Project dan pilih Create >

Prefab (lihat Gambar 1.49). Sebuah Prefab baru muncul, dan Anda dapat menamainya apa pun yang Anda inginkan. Karena Prefabnya kosong, itu muncul sebagai kotak putih kosong.

Gambar 1.49 Membuat Prefab baru

Seperti semua aset lainnya, biasanya merupakan ide yang baik untuk memulai dengan membuat folder di bawah Aset dalam tampilan Proyek untuk memuat Prefab Anda. Membuat folder untuk menampung prefab Anda tidak diperlukan, tetapi ini adalah langkah organisasi yang bagus dan harus dilakukan untuk mencegah kebingungan antara prefab dan aset asli (seperti mesh atau sprite). Langkah selanjutnya adalah mengisi Prefab dengan sesuatu. Objek game apa pun bisa masuk ke Prefab. Anda hanya perlu membuat objek sekali dalam tampilan Scene lalu klik dan drag ke aset Prefab. Atau, Anda dapat mempersingkat proses ini menjadi satu langkah dengan menyeret objek game apa pun dari tampilan Hierarki ke tampilan proyek.

Melakukannya akan membuat Prefab, menamainya, dan mengisinya—semuanya pada waktu yang sama.

Gambar 1.50 Cara yang lebih cepat untuk membuat Prefab.

Membuat Prefab

Ikuti langkah-langkah ini untuk membuat prefab dari objek game yang kompleks, yang akan Anda gunakan nanti dalam satu jam ini (jadi jangan hapus!):

1. Buat proyek atau scene baru. Tambahkan kubus dan bola ke TKP. Ganti nama lampu kubus.

2. Posisikan kubus pada (0, 1, 0) dengan scale (0,5, 2, .5). Tambahkan benda tegar ke kubus. Posisikan bola di (0, 2.2, 0). Letakkan komponen titik cahaya pada bola.

3. Klik dan drag bola dalam tampilan Hierarki ke kubus untuk membuat sarang bola di bawah kubus

Gambar 1.51 Bola bersarang di bawah kubus.

4. Buat folder baru di bawah folder Aset dalam tampilan Proyek. Beri nama folder baru Prefabs.

5. Pada tampilan Hierarchy, klik dan drag objek Lamp game (yang berisi bola) ke dalam tampilan Project. Perhatikan bahwa ini menciptakan Prefab yang terlihat seperti lampu.

Perhatikan juga bahwa kubus dan bola dalam tampilan Hierarki berubah menjadi biru.

Pada titik ini, Anda dapat menghapus kubus dan bola dari scene karena sekarang ada dalam Prefab.

Gambar 1.52 Menambahkan objek ke Prefab

Menambahkan Instance Prefab ke Scene

Setelah aset pabrikan dibuat, Anda dapat menambahkannya sebanyak yang Anda inginkan ke sebuah scene atau sejumlah scene dalam sebuah proyek. Untuk menambahkan contoh prefab ke sebuah scene, yang perlu Anda lakukan hanyalah mengklik dan menyeret

prefab dari tampilan Proyek ke tempatnya di tampilan Scene, atau tampilan Hierarki. Jika Anda menyeret ke tampilan Scene, prefab akan dipakai di tempat Anda menyeret. Jika Anda menyeret ke bagian kosong dari tampilan Hierarchy, posisi awalnya adalah apa pun yang diatur dalam Prefab. Jika Anda menyeret ke objek lain dalam tampilan Hierarki, prefab menjadi anak dari objek itu

Membuat Beberapa Instance Prefab

Kali ini, Anda akan menggunakan Prefab itu untuk membuat banyak lampu dalam satu scene. Pastikan untuk menyimpan scene yang dibuat di sini karena Anda akan menggunakannya nanti di jam ini. Ikuti langkah-langkah ini:

1. Buat scene baru dalam proyek yang sama yang digunakan untuk "Membuat Prefab"

Coba Sendiri, dan beri nama scene ini Lamps.

2. Buat sebuah pesawat dan pastikan posisinya berada di (0, 0, 0). Ubah nama lantai pesawat. Opsional, berikan lantai bahan abu-abu agar bayangan tampak lebih jelas di atasnya.

3. Drag prefab Lamp Anda ke lantai dalam tampilan Scene. Perhatikan bagaimana lampu melacak ke tumpatan lantai.

4. Drag tiga prefab Lampu lagi ke lantai dan posisikan di dekat sudut

Gambar 1.53 Menempatkan lampu di scene.

Warisan

Ketika istilah warisan digunakan dalam hubungannya dengan prefab, itu mengacu pada link dimana instance dari prefab terhubung ke aset prefab yang sebenarnya. Artinya, jika Anda mengubah aset prefab, semua objek prefab juga otomatis berubah. Ini sangat berg una.

Anda akan seperti banyak programmer game lainnya jika Anda menempatkan sejumlah besar objek Prefab ke dalam sebuah scene hanya untuk menyadari bahwa mereka semua membutuhkan perubahan kecil. Tanpa warisan, Anda harus mengubah masing-masing secara

individual. Ada dua cara Anda dapat mengubah aset Prefab. Yang pertama adalah dengan melakukan perubahan pada tampilan Project. Hanya dengan memilih aset pabrikan dalam tampilan Proyek akan menampilkan komponen dan propertinya dalam tampilan Inspector.

Jika Anda perlu memodifikasi elemen anak, Anda dapat memperluas prefab (seperti yang dijelaskan sebelumnya jam ini) dan mengubah objek tersebut dengan cara yang sama. Cara lain Anda dapat memodifikasi aset prefab adalah dengan menyeret sebuah instance ke dalam scene. Dari sana, Anda dapat membuat modifikasi besar apa pun yang Anda inginkan. Setelah selesai, cukup klik Terapkan di kanan atas Inspector.

Melanggar Tautan Prefab

Terkadang Anda perlu memutuskan tautan instans prefab ke aset prefab. Anda mungkin ingin melakukan ini jika Anda membutuhkan objek Prefab tetapi Anda tidak ingin objek berubah jika Prefab pernah berubah. Memutus tautan instans ke prefab tidak mengubah instans dengan cara apa pun. Instance masih mempertahankan semua objek, komponen, dan propertinya. Satu-satunya perbedaan adalah bahwa itu bukan lagi turunan dari Prefab dan oleh karena itu tidak lagi terpengaruh oleh warisan. Untuk memutuskan tautan objek ke aset pabrikan, cukup pilih objek dalam tampilan Hierarki. Setelah memilihnya, klik GameObject > Break Prefab Instance. Objek tidak berubah, tetapi namanya berubah dari biru menjadi hitam. Setelah tautan rusak, tautan dapat diterapkan kembali dengan mengklik Kembalikan di tampilan Inspector.

Membuat Instansi Prefab Melalui Kode

Menempatkan objek Prefab ke dalam scene adalah cara yang bagus untuk membangun tingkat yang konsisten dan terencana. Namun, terkadang Anda ingin membuat instance saat runtime. Mungkin Anda ingin musuh muncul kembali, atau Anda ingin mereka ditempatkan secara acak. Mungkin juga Anda membutuhkan begitu banyak instance sehingga menempatkannya dengan tangan tidak lagi memungkinkan. Apa pun alasannya, membuat instance prefab melalui kode adalah solusi yang baik. Ada dua cara untuk membuat instance objek prefab dalam sebuah scene, dan keduanya menggunakan metode Instantiate(). Cara pertama adalah dengan menggunakan Instantiate() seperti ini:

Instantiate(GameObject prefab);

Seperti yang Anda lihat, metode ini hanya membaca variabel GameObject dan membuat salinannya. Lokasi, rotasi, dan scale objek baru sama dengan objek yang dikloning.

Cara kedua untuk menggunakan metode Instantiate() adalah seperti ini:

Instantiate(GameObject prefab, Vector3 position, Quaternion rotation);

Metode ini membutuhkan tiga parameter. Yang pertama masih objek untuk disalin.

Parameter kedua dan ketiga adalah posisi dan rotasi objek baru yang diinginkan. Anda mungkin telah memperhatikan bahwa rotasi disimpan dalam sesuatu yang disebut quaternion.

Ketahuilah bahwa inilah cara Unity menyimpan informasi rotasi. (Aplikasi sebenarnya dari quaternion berada di luar cakupan jam ini.) Latihan di akhir jam ini menunjukkan contoh dua metode untuk membuat objek dalam kode.

BAB 2

Dalam dokumen Membuat Video Game Dengan 3D Unity (Halaman 61-70)