In che modo Unity utilizza C # come linguaggio di scripting?


8

Per quanto ne so, finora, ho pensato che C # è ed è sempre stato un linguaggio compilato. Di recente ho iniziato a studiare Unity3d e ho notato che offrono C # come opzione per lo scripting e l'interazione con gli oggetti di gioco attraverso la loro API (insieme a JavaScript e un paio di altre alternative).

Come si fa? C # viene effettivamente eseguito o è un'astrazione che viene convertita in un diverso linguaggio di scripting sotto le copertine? Mi sembra che ci sia una sorta di interpretazione in corso per questa funzionalità.


2
Cosa sono i linguaggi di scripting?
jcora,

en.wikipedia.org/wiki/Category:Scripting_languages lingue interpretate in fase di esecuzione anziché in fase di compilazione.
Brandon Clapp,

2
Ma JavaScript viene compilato prima di essere eseguito il 99% delle volte, e anche alcune implementazioni di Python. C (++) può essere interpretato. Penso che la terminologia sia difettosa, poiché non stai parlando di una proprietà della lingua, ma del modo in cui la usi. Ma sembra che non sia molto importante per la domanda ...
jcora

"compilato" o "scritto" non è di proprietà del linguaggio di programmazione. Quando si implementa la specifica del linguaggio, è possibile decidere se si desidera "compilarlo" o "interpretarlo".
Ivan Kuckir,

1
Detto questo, quello che ho sempre interpretato come un "linguaggio di scripting" è la base di questa definizione. Forse il vocabolario avrebbe dovuto essere "interpretato", ma li ho sempre visti uno nella stessa. webopedia.com/TERM/S/scripting_language.html
Brandon Clapp

Risposte:


15

Unity sta usando Mono dietro le quinte. Ogni volta che apporti una modifica agli script C # / UnityScript, il codice viene ricompilato quasi istantaneamente.

Se guardi nella directory dei dati di un lettore di unità autonomo, puoi vedere che ha compilato tutti gli script in Assembly-CSharp.dll o simili.

Quindi sì, il C # è in fase di compilazione.


Ah, vedo ora il DLL nella directory dei dati. Questo chiarisce le cose.
Brandon Clapp,

5
+1 per aver effettivamente risposto alla domanda e non averla trasformata in un pomposo incontro semantico di lotta al braccio
HumanCatfood

1
@BrandonClapp se questa risposta ha risolto la tua domanda, contrassegnala come corretta.
Petervaz,

1
Ci scusiamo per il ripristino, ma come fa Unity a gestire il caricamento e lo scaricamento della DLL compilata nell'editor? O dovrei iniziare una nuova domanda?
Jeff,

-4

Innanzitutto, i linguaggi di scripting non sono necessariamente interpretati. Alcuni linguaggi di scripting come Lua e Python possono essere compilati o interpretati da JIT.

E, per quanto riguarda la domanda stessa: perché C # è un linguaggio di scripting, ma Microsoft fa un buon lavoro nel farlo sembrare non tale.

C # ha tutto ciò di cui un linguaggio di scripting ha bisogno: digitazione dinamica, compilazione JIT anziché compilazione statica, viene eseguita in una macchina virtuale ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.