Menyelesaikan Masalah Null Class Instance dalam Perpaduan
Pembangun unity sering menghadapi kejadian kelas nol, walaupun dengan penetapan parameter yang kelihatan betul. Ini biasanya berpunca daripada gelagat unik kelas yang diwarisi daripada MonoBehaviour
.
MonoBehaviour
Teka-teki
Skrip yang diwarisi daripada MonoBehaviour
menjadi komponen Unity, tertakluk pada pengurusan kitaran hayatnya. Ini bermakna penggunaan terus kata kunci new
untuk membuat kejadian adalah tidak betul. Mandat perpaduan menggunakan kaedah khusus untuk instantiasi.
Semerta yang Betul: GameObject.AddComponent()
Untuk kelas turunan MonoBehaviour
seperti 'Peraturan', instantiasi harus memanfaatkan GameObject.AddComponent()
:
<code class="language-C#">Rule rule2 = null; void Start() { rule2 = gameObject.AddComponent<Rule>(); }</code>
Ini memastikan integrasi yang betul dengan sistem Unity.
Membuat Kelas BukanMonoBehaviour
Jika 'Peraturan' tidak diwarisi daripada MonoBehaviour
, kata kunci new
boleh diterima:
<code class="language-C#">Rule rule2 = null; void Start() { rule2 = new Rule(3); }</code>
Di sini, instantiasi langsung dan penetapan parameter berfungsi seperti yang diharapkan.
Pertimbangan Fungsi Panggilan Balik
Versi Unity yang lebih lama mempamerkan isu halus apabila menggunakan new
dengan kelas turunan MonoBehaviour
; fungsi panggil balik seperti Start()
mungkin tidak dicetuskan dengan betul. Walaupun ini mungkin kurang jelas dalam versi yang lebih baharu, amalan terbaik masih menentukan menggunakan kaedah instantiasi yang betul.
Pengambilan Utama
Instasiasi yang betul bergantung pada sama ada kelas anda mewarisi daripada MonoBehaviour
. Menggunakan GameObject.AddComponent()
untuk kelas turunan MonoBehaviour
dan new
untuk yang lain menghalang ralat rujukan nol dan memastikan kelakuan skrip yang betul dalam Unity.
Atas ialah kandungan terperinci Mengapa Instance Kelas Perpaduan Saya Batal Walaupun Penetapan Parameter Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!