Komponen Kecil
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 1 dari 64.
GameObject adalah daftar komponen, dan setiap script yang kamu tulis menjadi salah satunya. Game Unity dibuat dengan memberi setiap script satu tugas, lalu memasang beberapa script pada sebuah object. Gerakan, tembakan, dan poin nyawa pemain bisa ditangani oleh satu PlayerController, tetapi jika dijadikan 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
- Turret: Shooter, Health
- Peti: Health
Dengan class C# biasa, kamu mungkin akan membuat hierarki pohon: Character, lalu ShootingCharacter : Character, lalu Player : ShootingCharacter. Turret menembak, tetapi tidak pernah berjalan, sedangkan peti hanya hancur, jadi setiap jenis object baru mengharuskanmu merombak hierarki pohon tersebut. Dengan komponen, jenis object baru adalah kombinasi baru dari script yang sudah ada, yang disusun di Inspector, dan setiap script dapat 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 += tidak mengubah y, sehingga Jumper pada object yang sama tetap bisa mengubah ketinggian. Mover yang menetapkan seluruh posisi ke new Vector3(x, 0.5f, z) akan mengembalikan y ke nilai sebelumnya setiap frame dan membatalkan lompatan.
Tantangan
MudahPisahkan Boat.cs agar setiap skrip mengerjakan satu tugas.
- Pindahkan gerakan naik turun ke
Bobber: aturstartYdiStart(), gerakan naik turun diUpdate(), denganheightdanspeedmiliknya sendiri. - Pindahkan kedipan ke
Blinker, dengan timer sendiri. - Hapus kedua tugas dan field-nya dari
Boat, agar hanya mengendalikan kemudi.
Tekan tombol “Main”: bebek bergerak naik turun, pelampung berkedip, dan perahu dikendalikan. Lalu tekan tombol “Periksa”.
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;
}
}
}
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja BersamaRangkuman: Turret ModularRangkuman: Meriam Kembar4Data yang Diserialisasi
Class yang Dapat DiserialisasiList di InspectorEnum di InspectorRangkuman: Tabel LootRangkuman: Acak Loot2Antarmuka di Unity
IDamageableAntarmuka dan TryGetComponentGetComponentsRingkasan: Tombol InteractRingkasan: Terdekat dalam Jangkauan5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaSelamatkan AnginGelombang sebagai DataRekap: database ItemBeli dari Toko8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearestLatihan sendiri: Playground Unity