Order eksekusi untuk fungsi acara
Coroutines

Fungsi Acara

Script di Unity tidak seperti ide tradisional program di mana kode berjalan terus menerus dalam lingkaran sampai menyelesaikan tugasnya. Alih-alih, Unity melewati kontrol ke skrip dengan memanggil fungsi-fungsi tertentu yang diumumkan di dalamnya. Setelah fungsi selesai mengeksekusi, kontrol dilewati kembali ke Unity. Fungsi-fungsi ini dikenal sebagai fungsi acara karena diaktifkan oleh Unity dalam menanggapi peristiwa yang terjadi selama gameplay. Unity menggunakan skema naming untuk mengidentifikasi fungsi mana untuk memanggil acara tertentu. Misalnya, Anda sudah akan melihat fungsi Update (disebut sebelum pembaruan bingkai terjadi) dan fungsi Start (disebut hanya sebelum pembaruan bingkai pertama objek). Banyak fungsi acara yang tersedia di Unity; daftar lengkap dapat ditemukan di halaman referensi skrip untuk kelas MonoBehaviour bersama dengan rincian penggunaan mereka. Berikut ini adalah beberapa peristiwa yang paling umum dan penting.

Acara Pembaruan rutin

Sebuah permainan agak seperti animasi di mana bingkai animasi dihasilkan di terbang. Konsep utama dalam pemrograman game adalah bahwa membuat perubahan posisi, keadaan dan perilaku objek dalam permainan hanya sebelum setiap bingkai diberikan. Fungsi Update adalah tempat utama untuk jenis kode ini di Unity. Perbarui disebut sebelum bingkai dirender dan juga sebelum animasi dihitung.

void Update() {
    float distance = speed * Time.deltaTime * Input.GetAxis("Horizontal");
    transform.Translate(Vector3.right * distance);
}

physics engineSebuah sistem yang mensimulasikan aspek sistem fisik sehingga benda dapat mempercepat dengan benar dan dipengaruhi oleh tabrakan, gravitasi dan kekuatan lainnya. More info
Lihat di Glossary
juga memperbarui langkah waktu diskrit dengan cara yang sama dengan rendering bingkai. Fungsi acara terpisah yang disebut FixedUpdate disebut hanya sebelum setiap pembaruan fisika. Karena pembaruan fisika dan pembaruan bingkai tidak terjadi dengan frekuensi yang sama, Anda akan mendapatkan hasil yang lebih akurat dari kode fisika jika Anda menempatkannya dalam fungsi FixedUpdate daripada Update.

void FixedUpdate() {
    Vector3 force = transform.forward * driveForce * Input.GetAxis("Vertical");
    rigidbody.AddForce(force);
}

Hal ini juga berguna kadang-kadang untuk dapat membuat perubahan tambahan pada titik setelah fungsi Update dan FixedUpdate telah disebut untuk semua objek di sceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
dan setelah semua animasi telah dihitung. Contohnya adalah di mana cameraKomponen yang menciptakan gambar sudut pandang tertentu di tempat kejadian Anda. Output ditarik ke layar atau ditangkap sebagai tekstur. More info
Lihat di Glossary
harus tetap dilatih pada objek target; penyesuaian orientasi kamera harus dibuat setelah objek target telah dipindahkan. Contoh lain adalah di mana kode skrip harus menimpa efek animasi (kata, untuk membuat kepala karakter melihat ke objek target di adegan). Fungsi LateUpdate dapat digunakan untuk situasi semacam ini.

void LateUpdate() {
    Camera.main.transform.LookAt(target.transform);
}

Acara Awalisasi

Hal ini sering berguna untuk dapat memanggil kode awalisasi di muka dari setiap pembaruan yang terjadi selama gameplay. Fungsi Start disebut sebelum bingkai pertama atau pembaruan fisika pada objek. Fungsi Awake disebut untuk setiap objek di tempat kejadian pada saat adegan dimuat. Perhatikan bahwa meskipun berbagai fungsi Start dan Awake disebut dalam urutan arbitrase, semua Awakes akan selesai sebelum Start pertama disebut. Ini berarti bahwa kode dalam fungsi Start dapat menggunakan awalisasi lain yang sebelumnya dilakukan dalam fase Awake.

Acara GUI

Unity memiliki sistem untuk membuat kontrol GUI atas aksi utama dalam adegan dan menanggapi klik pada kontrol ini. Kode ini ditangani agak berbeda dari pembaruan bingkai normal dan sehingga harus ditempatkan dalam fungsi OnGUI, yang akan disebut secara berkala.

void OnGUI() {
    GUI.Label(labelRect, "Game Over");
}

Anda juga dapat mendeteksi peristiwa mouse yang terjadi pada GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary
seperti itu muncul di tempat kejadian. Ini dapat digunakan untuk menargetkan senjata atau menampilkan informasi tentang karakter saat ini di bawah pointer mouse. Satu set fungsi acara OnMouseXXX (misalnya, OnMouseOver, OnMouseDown) tersedia untuk memungkinkan skrip untuk bereaksi terhadap tindakan pengguna dengan mouse. Misalnya, jika tombol mouse ditekan sementara pointer adalah atas objek tertentu maka fungsi OnMouseDown dalam skrip objek itu akan disebut jika ada.

Photogallery

Mesin fisika akan melaporkan collisionstabrakan terjadi ketika mesin fisika mendeteksi bahwa tabrakan dari dua GameObjects membuat kontak atau tumpang tindih, ketika setidaknya satu memiliki komponen kaku dan bergerak. More info
Lihat di Glossary
terhadap objek dengan memanggil fungsi acara pada skrip objek itu. Fungsi OnCollisionEnter, OnCollisionStay dan OnCollisionExit akan disebut sebagai kontak dibuat, dipegang dan rusak. Fungsi OnTriggerEnter yang sesuai, OnTriggerStay dan OnTriggerExit akan disebut ketika colliderBentuk tak terlihat yang digunakan untuk menangani tabrakan fisik untuk objek. Seorang sari tidak perlu menjadi bentuk yang sama dengan jala objek - perkiraan kasar sering lebih efisien dan tidak dapat dibedakan dalam gameplay. More info
Lihat di Glossary
objek dikonfigurasi sebagai Pemicu (yaitu tabrakan yang hanya mendeteksi ketika sesuatu memasukkannya daripada bereaksi secara fisik). Fungsi-fungsi ini dapat disebut beberapa kali berturut-turut jika lebih dari satu kontak terdeteksi selama pembaruan fisika dan sehingga parameter dilewatkan ke fungsi memberikan rincian tabrakan (posisi, identitas objek masuk, dll).

void OnCollisionEnter(otherObj: Collision) {
    if (otherObj.tag == "Arrow") {
        ApplyDamage(10);
    }
}

Order eksekusi untuk fungsi acara
Coroutines