Bagaimana Unity menggunakan C # sebagai bahasa skrip?

8

Sejauh pengetahuan saya, sejauh ini, saya berpikir bahwa C # adalah dan selalu merupakan bahasa yang dikompilasi. Saya baru-baru ini mulai mempelajari Unity3d dan memperhatikan bahwa mereka memberikan C # sebagai opsi untuk scripting dan berinteraksi dengan objek game melalui API mereka (bersama dengan JavaScript dan beberapa alternatif lain).

Bagaimana ini dilakukan? Apakah C # benar-benar dieksekusi atau ini abstraksi yang sedang dikonversi ke bahasa skrip lain di bawah sampul? Tampaknya bagi saya bahwa ada semacam penafsiran yang terjadi untuk fungsi ini.

Brandon Clapp
sumber
2
Apa itu bahasa scripting?
jcora
en.wikipedia.org/wiki/Category:Scripting_languages bahasa ditafsirkan pada saat runtime daripada waktu kompilasi.
Brandon Clapp
2
Tetapi JavaScript dikompilasi sebelum dieksekusi 99% dari waktu, dan beberapa implementasi Python juga. C (++) dapat diartikan. Saya pikir terminologi itu cacat, karena Anda tidak berbicara tentang properti bahasa, tetapi cara Anda menggunakannya. Tapi sepertinya itu tidak terlalu penting untuk pertanyaan ...
jcora
"dikompilasi" atau "dituliskan" bukan milik bahasa pemrograman. Saat Anda menerapkan spesifikasi bahasa, Anda dapat memutuskan apakah Anda ingin "mengkompilasi" atau "menafsirkannya".
Ivan Kuckir
1
Yang sedang berkata, apa yang saya selalu tafsirkan sebagai "bahasa scripting" adalah dasar dari definisi ini. Mungkin kosakata harus "ditafsirkan" tetapi saya selalu melihat mereka satu sama. webopedia.com/TERM/S/scripting_language.html
Brandon Clapp

Jawaban:

15

Unity menggunakan Mono di belakang layar. Setiap kali Anda membuat perubahan pada skrip C # / UnityScript Anda mengkompilasi ulang kode hampir secara instan.

Jika Anda melihat di direktori data pemain persatuan yang berdiri sendiri, Anda dapat melihatnya telah mengkompilasi semua skrip ke Assembly-CSharp.dll, atau serupa.

Jadi ya, C # sedang dikompilasi.

Simon Moles
sumber
Ah saya melihat .dll sekarang di direktori data. Ini jelas.
Brandon Clapp
5
+1 untuk benar-benar menjawab pertanyaan dan tidak mengubahnya menjadi pertandingan semantik lengan-gulat semantik
HumanCatfood
1
@BrandonClapp jika jawaban ini menyelesaikan pertanyaan Anda, harap tandai sebagai benar.
petervaz
1
Maaf untuk menghidupkan kembali ini, tetapi bagaimana Unity menangani pemuatan dan pembongkaran DLL yang dikompilasi di editor? Atau haruskah saya memulai pertanyaan baru?
Jeff
-4

Pertama, bahasa scripting tidak harus ditafsirkan bahasa. Beberapa bahasa scripting seperti Lua dan Python dapat dikompilasi atau ditafsirkan JIT.

Dan, untuk pertanyaan itu sendiri: karena C # adalah bahasa scripting, tetapi Microsoft melakukan pekerjaan yang baik untuk membuatnya tidak terlihat seperti itu.

C # memiliki semua yang dibutuhkan bahasa scripting: pengetikan dinamis, kompilasi JIT, bukan kompilasi statis, berjalan di mesin virtual ...

UBSophung
sumber