Comment Unity utilise-t-il C # comme langage de script?

8

À ma connaissance, jusqu'à présent, j'ai pensé que C # est et a toujours été un langage compilé. J'ai récemment commencé à étudier Unity3d et j'ai remarqué qu'ils offrent C # comme option pour l'écriture de scripts et l'interaction avec des objets de jeu via leur API (avec JavaScript et quelques autres alternatives).

Comment cela se fait-il? Est-ce que C # est en train d'être exécuté ou est-ce une abstraction qui est convertie dans un autre langage de script sous les couvertures? Il me semble qu'il y a une sorte d'interprétation en cours pour cette fonctionnalité.

Brandon Clapp
la source
2
Que sont les langages de script?
jcora
en.wikipedia.org/wiki/Category : Langages Scripting_languages interprétés au moment de l'exécution plutôt qu'au moment de la compilation.
Brandon Clapp
2
Mais JavaScript est compilé avant d'être exécuté 99% du temps, et certaines implémentations Python aussi. C (++) peut être interprété. Je pense que la terminologie est défectueuse, car vous ne parlez pas d'une propriété de la langue, mais de la façon dont vous l'utilisez. Mais il semble que ce ne soit pas vraiment important pour la question ...
jcora
"compilé" ou "scripté" n'est pas la propriété du langage de programmation. Lorsque vous implémentez la spécification du langage, vous pouvez décider si vous voulez la "compiler" ou "l'interpréter".
Ivan Kuckir
1
Cela étant dit, ce que j'ai toujours interprété comme un "langage de script" est à la base de cette définition. Peut-être que le vocabulaire aurait dû être "interprété" mais je les ai toujours vus l'un dans le même. webopedia.com/TERM/S/scripting_language.html
Brandon Clapp

Réponses:

15

Unity utilise Mono dans les coulisses. Chaque fois que vous modifiez vos scripts C # / UnityScript, il recompile le code presque instantanément.

Si vous regardez dans le répertoire de données d'un lecteur d'unité autonome, vous pouvez voir qu'il a compilé tous les scripts dans Assembly-CSharp.dll, ou similaire.

Alors oui, le C # est en cours de compilation.

Simon Moles
la source
Ah je vois le .dll maintenant dans le répertoire de données. Cela clarifie les choses.
Brandon Clapp
5
+1 pour avoir réellement répondu à la question et ne pas l'avoir transformée en un pompeux match de bras de fer sémantique
HumanCatfood
1
@BrandonClapp si cette réponse a résolu votre question, veuillez la marquer comme correcte.
petervaz
1
Désolé d'avoir relancé cela, mais comment Unity gère-t-il le chargement et le déchargement de la DLL compilée dans l'éditeur? Ou devrais-je commencer une nouvelle question?
Jeff
-4

Premièrement, les langages de script ne sont pas nécessairement des langages interprétés. Certains langages de script tels que Lua et Python peuvent être compilés en JIT ou interprétés.

Et, comme pour la question elle-même: parce que C # est un langage de script, mais Microsoft fait un bon travail pour le faire ne pas ressembler à tel.

C # a tout ce dont un langage de script a besoin: typage dynamique, compilation JIT plutôt que compilation statique, s'exécute dans une machine virtuelle ...

UBSophung
la source