Update ve LateUpdate
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 71 / 85.
Her karede Unity, her betiği üzerinde Update() çağırır ve ancak hepsi işini bitirdiğinde her betiği üzerinde LateUpdate() çağırır. Hangi nesnenin Update() metodunun önce çalışacağı sana bağlı değildir.
Bu, başka bir şeyi takip eden her şey için önemlidir. Update() içinde oyuncunun konumunu kopyalayan bir kamera, oyuncunun kendi Update() metodu onu hareket ettirmeden önce çalışabilir; bu durumda kamera, oyuncunun bir kare önceki konumunu kopyalar: kamera bir adım geriden gelir ve bunun olup olmayacağı, nesneler eklendiğinde veya sahne yeniden yüklendiğinde değişebilir. LateUpdate() içinde kopyalama her zaman oyuncu hareket ettikten sonra gerçekleşir:
public Transform player;
public Vector3 offset = new Vector3(0, 3, -6);
void LateUpdate()
{
transform.position = player.position + offset;
}Kural şu: nesneleri Update() içinde hareket ettir; kamera, etiketler ve nişan alma gibi, nesnelerin vardığı konuma tepki veren kodları ise LateUpdate() içine koy. Her ikisi de kare başına bir kez çalışır ve Time.deltaTime ikisinde de aynı anlama gelir.
Görev
OrtaHer karede isim etiketinin oyuncunun tam üzerinde durmasını sağla.
- Her betiğin
Update()metodundan sonra çalışanvoid LateUpdate()metodunu ekle. if (target != null)bölümünü bu metoda taşı veUpdate()içinde,if (target == null)koşulunun altında yalnızca ok tuşlarıyla hareket etme kodunu bırak.
“Oyna” düğmesine bas ve bir ok tuşunu basılı tut: etiket oyuncunun hemen üzerinde kalır. Ardından “Kontrol et” düğmesine bas.
Kendin dene
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);
}
}
}
}
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1Unity'de C# Temelleri
Merhaba, UnityDeğişkenlerOndalık Sayılar için f GerekirKonsolda MetinHatırlayan DeğişkenlerEğer ve DeğilseSayıları KarşılaştırmaTekrar: Coin Collector4Girdi
Basılı, Basılı Tutulmuş, BırakılmışEksenlerAdlandırılmış DüğmelerFare DüğmeleriTekrar: Zıplama Yükleme7Döngüler ve Metotlar
for ile tekrarlamaİç içe döngülerBir metot yazmaYanıt veren metotlarDizilerTekrar: Merdiven10Nesneleri Bulma
Ada Göre BulEtiketlerTüre Göre BulReferanslar Bulmaktan İyidirUnity'de NullÖzet: En Yakın Madeni Para13Proje: Bloklardan Kaç
KoşucuGökyüzünden Bloklar5Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir Struct'tırTekrar: Drone Pilotu8GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı3Inspector
Inspector AlanlarıSerializeFieldOndalıklı Sayılar ve MathfInspector ÖzellikleriTekrar: Asansör6Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarBayrağı Göndere ÇekÖlçekNesnelere BakBir Noktaya Doğru Hareket EtTekrar: Yörüngedeki Ay9Proje: Yıldızı Yakala
YakalayıcıDüşen Bir Yıldız12Betiğin Yaşam Döngüsü
Awake ve StartUpdate ve LateUpdateOnEnable ve OnDisableYaşam Döngüsü SırasıTekrar: Yaşam Döngüsü KaydedicisiKendi başına pratik yap: Unity playground