Komponen Kecil
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 1 dari 50.
GameObject adalah daftar komponen, dan setiap script yang kamu tulis menjadi salah satunya. Game Unity dibuat dengan memberi setiap script satu tugas dan memasang beberapa script pada sebuah object. Gerakan, tembakan, dan poin nyawa pemain bisa ditempatkan dalam satu PlayerController, tetapi sebagai tiga komponen, Mover, Shooter, dan Health, masing-masing juga bisa dipasang pada object lain:
public class Health : MonoBehaviour
{
public int hp = 3;
public void TakeDamage(int amount)
{
hp -= amount;
if (hp <= 0)
{
Destroy(gameObject);
}
}
}- Pemain: Mover, Shooter, Health
- Meriam: Shooter, Health
- Peti: Health
Dengan class C# biasa, kamu mungkin membuat hierarki pohon: Character, lalu ShootingCharacter : Character, lalu Player : ShootingCharacter. Meriam bisa menembak, tetapi tidak pernah berjalan, sedangkan peti hanya bisa hancur, jadi setiap jenis object baru mengharuskanmu mengubah bentuk hierarki pohon itu. Dengan komponen, jenis object baru merupakan perpaduan baru dari script yang sudah ada, yang disusun bersama di Inspector, dan setiap script bisa memiliki nilainya sendiri di sana: Mover yang lambat pada satu object, dan Mover yang cepat pada object lain.
Komponen pada satu object menggunakan Transform yang sama, jadi masing-masing hanya boleh mengubah bagian yang menjadi tanggung jawabnya. Mover yang menambahkan nilai ke x dan z dengan transform.position += membiarkan y tetap, sehingga Jumper pada object yang sama tetap bisa mengubah ketinggiannya. Mover yang menetapkan seluruh posisi ke new Vector3(x, 0.5f, z) akan mengembalikan y ke nilai semula setiap frame dan membatalkan lompatan.
Tantangan
MudahBoat.cs menjalankan tiga tugas sekaligus: panah (aksi Move) mengendalikan arah perahu, perahu mengapung naik turun mengikuti ombak, dan lampunya berkedip. Bebek juga perlu mengapung naik turun, sedangkan pelampung perlu mengapung naik turun dan berkedip. Jadi, scene sudah memberi mereka komponen Bobber dan Blinker, sementara perahu memiliki ketiganya. Pisahkan Boat.cs menjadi beberapa bagian:
- Bobber: setiap object mengapung naik turun di sekitar ketinggian awalnya sejauh
heightunit, denganspeedmasing-masing (Inspector mengatur keduanya). Bobber hanya mengubah y pada posisi, jadi perahu tetap bisa dikendalikan. - Blinker: komponen ini menyalakan dan mematikan
lamp(sebuah Renderer) setiapintervaldetik. - Boat hanya menangani kendali arah: hapus bagian yang mengatur gerakan naik turun dan kedipan, beserta field-nya.
Tekan Play dan kendalikan perahu, lalu tekan Check.
Coba sendiri
using UnityEngine;
using UnityEngine.InputSystem;
// Satu skrip, tiga tugas: mengarahkan, mengayun, dan berkedip.
public class Boat : MonoBehaviour
{
public float speed = 3f;
public float bobHeight = 0.1f;
public float bobSpeed = 2f;
public Renderer lamp;
public float blinkInterval = 0.5f;
private InputAction moveAction;
private float startY;
private float blinkTimer;
void Start()
{
moveAction = InputSystem.actions.FindAction("Move");
startY = transform.position.y;
}
void Update()
{
// mengarahkan
Vector2 input = moveAction.ReadValue<Vector2>();
transform.position += new Vector3(input.x, 0f, input.y) * speed * Time.deltaTime;
// mengayun
Vector3 p = transform.position;
p.y = startY + Mathf.Sin(Time.time * bobSpeed) * bobHeight;
transform.position = p;
// berkedip
blinkTimer += Time.deltaTime;
if (blinkTimer >= blinkInterval)
{
blinkTimer -= blinkInterval;
lamp.enabled = !lamp.enabled;
}
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja SamaRingkasan: Turret Modular5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaGelombang sebagai DataUlasan: database Item8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearest