Beberapa waktu yang lalu saya mulai bekerja dengan Unity dan saya masih bergumul dengan masalah skrip yang sangat erat. Bagaimana saya bisa menyusun kode saya untuk menghindari masalah ini?
Sebagai contoh:
Saya ingin memiliki sistem kesehatan dan kematian dalam skrip terpisah. Saya juga ingin memiliki skrip berjalan dipertukarkan yang berbeda yang memungkinkan saya untuk mengubah cara karakter pemain dipindahkan (berbasis fisika, kontrol inersia seperti di Mario versus kontrol ketat, berkedut seperti di Super Meat Boy). Skrip Kesehatan perlu memiliki referensi ke skrip Kematian, sehingga dapat memicu metode Die () ketika kesehatan pemain mencapai 0. Skrip Kematian harus menyimpan beberapa referensi untuk skrip berjalan yang digunakan, untuk menonaktifkan walk on death (I lelah dengan zombie).
Saya biasanya akan membuat antarmuka, seperti IWalking
, IHealth
dan IDeath
, sehingga saya dapat mengubah elemen-elemen ini dengan cepat tanpa merusak sisa kode saya. Saya ingin mereka mengaturnya dengan skrip terpisah pada objek pemain, katakanlah PlayerScriptDependancyInjector
. Mungkin skrip itu akan memiliki publik IWalking
, IHealth
dan IDeath
atribut, sehingga dependensi dapat ditetapkan oleh desainer level dari inspektur dengan menyeret dan menjatuhkan skrip yang sesuai.
Itu akan memungkinkan saya untuk menambahkan perilaku ke objek game dengan mudah dan tidak khawatir tentang dependensi hard-coded.
Masalah di Unity
The masalah adalah bahwa dalam Persatuan saya tidak dapat mengekspos antarmuka dalam inspektur, dan jika saya menulis inspektur saya sendiri, referensi wont mendapatkan serial, dan itu banyak pekerjaan yang tidak perlu. Itu sebabnya saya pergi dengan menulis kode yang sangat erat. Death
Skrip saya memaparkan referensi ke InertiveWalking
skrip. Tetapi jika saya memutuskan saya ingin karakter pemain untuk mengontrol dengan ketat, saya tidak bisa hanya drag and drop TightWalking
script, saya perlu mengubah Death
skrip. Itu menyebalkan. Saya dapat menghadapinya, tetapi jiwa saya menangis setiap kali saya melakukan hal seperti ini.
Apa alternatif yang disukai untuk antarmuka di Unity? Bagaimana saya memperbaiki masalah ini? Saya menemukan ini , tetapi itu memberi tahu saya apa yang sudah saya ketahui, dan itu tidak memberi tahu saya bagaimana melakukannya di Unity! Ini juga membahas apa yang harus dilakukan, bukan bagaimana, itu tidak membahas masalah kopling ketat antar skrip.
Secara keseluruhan, saya merasa itu ditulis untuk orang-orang yang datang ke Unity dengan latar belakang desain game yang baru belajar cara membuat kode, dan ada sangat sedikit sumber daya di Unity untuk pengembang reguler. Apakah ada cara standar untuk menyusun kode Anda di Unity, atau apakah saya harus mencari tahu metode saya sendiri?
The problem is that in Unity I can't expose interfaces in the inspector
Saya rasa saya tidak mengerti apa yang Anda maksud dengan "mengekspos antarmuka di inspektur" karena pikiran pertama saya adalah "mengapa tidak?"