Update dan LateUpdate
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 71 dari 85.
Di setiap frame, Unity memanggil Update() pada setiap skrip, dan baru setelah semuanya selesai, Unity memanggil LateUpdate() pada setiap skrip. Kamu tidak bisa menentukan objek mana yang Update()-nya berjalan lebih dulu.
Hal ini penting untuk apa pun yang mengikuti hal lain. Kamera yang menyalin posisi pemain di Update() mungkin berjalan sebelum Update() pemain sendiri memindahkannya, lalu kamera menyalin posisi pemain dari satu frame sebelumnya: kamera tertinggal satu langkah, dan apakah ini terjadi bisa berubah saat objek ditambahkan atau scene dimuat ulang. Di LateUpdate(), penyalinan selalu terjadi setelah pemain berpindah:
public Transform player;
public Vector3 offset = new Vector3(0, 3, -6);
void LateUpdate()
{
transform.position = player.position + offset;
}Aturannya: pindahkan objek di Update(), dan letakkan kode yang bereaksi terhadap posisi akhir objek, seperti kamera, label, dan bidikan, di LateUpdate(). Keduanya berjalan sekali setiap frame, dan Time.deltaTime memiliki arti yang sama pada keduanya.
Tantangan
SedangBuat label nama tetap tepat di atas pemain pada setiap frame.
- Tambahkan
void LateUpdate(), yang berjalan setelahUpdate()setiap skrip. - Pindahkan bagian
if (target != null)ke dalamnya, dan sisakan hanya gerakan dengan tombol panah diUpdate(), di bawahif (target == null).
Tekan tombol “Main” dan tahan tombol panah: label tetap tepat di atas pemain. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
public class Mover : MonoBehaviour
{
public Transform target;
public Vector3 offset;
public float speed = 4f;
void Update()
{
if (target != null)
{
transform.position = target.position + offset;
}
else
{
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);
}
}
}
}
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 Lampu6Transformasi dan Hierarki
Objek Induk dan AnakKibarkan BenderaSkalaMelihat BendaBergerak Menuju TitikRekap: Bulan yang Mengorbit12Siklus Hidup Skrip
Awake dan StartUpdate dan LateUpdateOnEnable dan OnDisableUrutan Siklus HidupRekap: Lifecycle LoggerLatihan sendiri: Playground Unity