¿Cómo utiliza Unity C # como lenguaje de script?

8

Que yo sepa, hasta ahora, he pensado que C # es y siempre ha sido un lenguaje compilado. Recientemente comencé a estudiar Unity3d y noté que ofrecen C # como una opción para crear secuencias de comandos e interactuar con los objetos del juego a través de su API (junto con JavaScript y un par de otras alternativas).

¿Cómo se hace esto? ¿C # se está ejecutando realmente o se trata de una abstracción que se está convirtiendo en un lenguaje de scripting diferente? Me parece que hay algún tipo de interpretación para esta funcionalidad.

Brandon Clapp
fuente
2
¿Qué son los lenguajes de script?
jcora
en.wikipedia.org/wiki/Category:Scripting_languages lenguajes interpretados en tiempo de ejecución en lugar de tiempo de compilación.
Brandon Clapp
2
Pero JavaScript se compila antes de ejecutarse el 99% del tiempo, y algunas implementaciones de Python también. C (++) puede ser interpretado. Creo que la terminología es defectuosa, ya que no estás hablando de una propiedad del lenguaje, sino de la forma en que lo usas. Pero parece que eso no es realmente importante para la pregunta ...
jcora
"compilado" o "programado" no es propiedad del lenguaje de programación. Cuando implemente la especificación de idioma, puede decidir si desea "compilarla" o "interpretarla".
Ivan Kuckir
1
Dicho esto, lo que siempre he interpretado como un "lenguaje de secuencias de comandos" es la base de esta definición. Quizás el vocabulario debería haber sido "interpretado", pero siempre los he visto uno en el mismo. webopedia.com/TERM/S/scripting_language.html
Brandon Clapp

Respuestas:

15

Unity está usando Mono detrás de escena. Cada vez que realiza un cambio en sus scripts de C # / UnityScript, vuelve a compilar el código casi al instante.

Si busca en el directorio de datos de un reproductor de unidad independiente, puede ver que ha compilado todos los scripts en Assembly-CSharp.dll, o similar.

Entonces sí, se está compilando el C #.

Simon Moles
fuente
Ah, veo el .dll ahora en el directorio de datos. Esto aclara las cosas.
Brandon Clapp
55
+1 por responder la pregunta y no convertirla en una pomposa lucha semántica de lucha de brazos
HumanCatfood
1
@BrandonClapp si esta respuesta resolvió su pregunta, márquela como correcta.
petervaz
1
Perdón por revivir esto, pero ¿cómo maneja Unity la carga y descarga de la DLL compilada en el editor? ¿O debería comenzar una nueva pregunta?
Jeff
-4

Primero, los lenguajes de script no son necesariamente lenguajes interpretados. Algunos lenguajes de secuencias de comandos, como Lua y Python, pueden compilarse o interpretarse JIT.

Y, en cuanto a la pregunta en sí: porque C # es un lenguaje de script, pero Microsoft hace un buen trabajo para que no se vea como tal.

C # tiene todo lo que un lenguaje de script necesita: escritura dinámica, compilación JIT en lugar de compilación estática, se ejecuta en una máquina virtual ...

UBSophung
fuente