Bagaimana Pembaruan disebut
Tidak, Unity tidak menggunakan System.Reflection untuk menemukan metode ajaib setiap kali perlu memanggil satu.
Sebagai gantinya, pertama kali MonoBehaviour dari jenis yang diberikan diakses skrip yang mendasarinya diperiksa melalui runtime scripting (baik Mono atau IL2CPP) apakah ia memiliki metode sihir yang ditentukan dan informasi ini di-cache. Jika MonoBehaviour memiliki metode khusus, ia ditambahkan ke daftar yang tepat, misalnya jika skrip memiliki metode Pembaruan yang ditetapkan, maka ditambahkan ke daftar skrip yang perlu diperbarui setiap frame.
Selama permainan, Unity hanya mengulangi daftar-daftar ini dan menjalankan metode darinya - sesederhana itu. Juga, inilah mengapa tidak masalah jika metode Pembaruan Anda bersifat publik atau pribadi.
Adapun alasannya dilakukan dengan cara ini, saya akan merujuk Anda (pembaca) ke jawaban DMGregory , yang bermuara pada dua hal yang saling bersaing:
- Optimalisasi kinerja
- Kemudahan pemanfaatan pengembang baru
Pengembang baru hanya menginginkannya untuk Bekerja dan tidak mau harus mencari tahu "bagaimana cara menghubungkan ini ke sistem acara?" tetapi harus tetap berjalan cepat dengan overhead yang minimal.
Solusinya mungkin yang terbaik yang bisa dicapai dalam dua kendala ini. Atau setidaknya, yang terbaik yang bisa dihasilkan oleh tim Unity dev pada saat itu. Kita mungkin tidak pernah tahu.