Apakah Unity menggunakan versi C # yang berbeda, atau apakah semuanya sama? Ini terlihat berbeda dari C # biasa tetapi ada beberapa elemen C # biasa di sana.
Apakah Unity menggunakan versi C # yang berbeda, atau apakah semuanya sama? Ini terlihat berbeda dari C # biasa tetapi ada beberapa elemen C # biasa di sana.
Jawaban:
Seperti yang dinyatakan dalam jawaban lain, Unity 4.x menggunakan versi Mono yang dimodifikasi berdasarkan Mono 2.6
Sebagian besar, ini kompatibel dengan .Net 2.0 , meskipun saya belum berhasil melacak daftar kompatibilitas spesifik Mono 2.6.
Ini terlihat berbeda dari C # biasa tetapi ada beberapa elemen C # biasa di sana.
Seperti yang disebutkan dalam salah satu komentar pada pertanyaan Anda, ini kemungkinan disebabkan oleh API scripting khusus Unity daripada bahasa itu sendiri.
Sebagai contoh, banyak kode dalam proyek Unity yang khas terkandung dalam subkelas dari kelas yang disebut MonoBehavior. Ini adalah komponen yang dijatuhkan di GameObjects dalam lingkungan Unity Editor. Arsitektur ini mengarah ke kode C # yang terlihat berbeda dengan kode C # khas (bagi saya) dalam beberapa cara:
Secara praktis, fitur bahasa C # terbesar yang saya lewatkan dalam versi C # Unity saat ini adalah dukungan untuk async dan kata kunci serta fungsionalitas terkait. Konsep serupa di Unity adalah coroutine . Ini dijalankan pada utas utama sehingga async tidak benar, tetapi memungkinkan kode berjalan lama untuk dipecah menjadi beberapa frame. Multithreading tingkat rendah masih didukung.
async
di C # juga tidak benar async seperti di multi-threaded - itu juga berjalan di utas utama. Perbedaan terbesar, dari perspektif penggunaan, antara coroutine dan async adalah waktu kode dijalankan.
Unity 4 menggunakan Mono 2.6 , yang merupakan implementasi penuh dari kerangka .NET, termasuk bahasa C #.
Saya tidak yakin tampilannya berbeda, tetapi perlu diingat bahwa Unity mendukung beberapa bahasa, yang semuanya berfungsi di atas runtime Mono yang sama. Mungkinkah Anda membingungkan C # dengan UnityScript ?
Persatuan menggunakan C # biasa.
Kemudian lagi, ketika Anda menulis C # di Unity Anda akan menggunakan banyak pustaka mereka, tetapi sejauh yang saya tahu, segala sesuatu yang mungkin dalam C # adalah mungkin di Unity, selain perbedaan yang tercantum di bawah ini:
Area yang lebih spesifik. Net yang terkait dengan Windows Forms & ASP terlarang melalui Unity.
Meskipun Anda dapat menggunakan Visual Studio untuk mengedit dan mengkompilasi kesalahan waktu, Anda harus membangun dan menjalankan di Unity IDE.
Unity menggunakan Mono yang merupakan implementasi open source dari .Net yang berarti ada sedikit perbedaan.
Pertanyaan apakah Versi C # yang digunakan oleh Unity berbeda dari "biasa" C # telah dijawab oleh posting lain. Karena Anda secara eksplisit meminta elemen-elemen tertentu yang mungkin berbeda dari versi reguler seperti itu, saya akan membagikan satu-satunya perbedaan kecil yang saya perhatikan ketika membandingkan C # yang saya gunakan di tempat kerja (yaitu C # 4.0 di Visual Studio 2010 dan lebih tinggi) dan C # di Unity, yang adalah bahwa saya tidak dapat menggunakan nilai default untuk parameter dalam definisi fungsi. yaitu Anda harus mengatur proyek Anda lebih hati-hati untuk menggunakan versi C # yang lebih baru. Lihat tautan ini untuk penjelasan lebih lanjut.
Sunting: Saya meninggalkan jawaban ini karena sejauh yang saya tahu ini adalah kesalahpahaman yang terjadi pada banyak orang.