Как Unity использует C # в качестве языка сценариев?


8

Насколько мне известно, до сих пор я думал, что C # есть и всегда был компилируемым языком. Недавно я начал изучать Unity3d и заметил, что они предоставляют C # в качестве опции для сценариев и взаимодействия с игровыми объектами через их API (наряду с JavaScript и несколькими другими альтернативами).

Как это сделать? C # на самом деле выполняется или это абстракция, которая конвертируется в другой язык сценариев под прикрытием? Мне кажется, что существует какая-то интерпретация этой функциональности.


2
Что такое скриптовые языки?
— Jcora

en.wikipedia.org/wiki/Category:Scripting_languages языки интерпретируются во время выполнения, а не во время компиляции.
— Брэндон Клэп,

2
Но JavaScript компилируется перед выполнением в 99% случаев, а также в некоторых реализациях Python. C (++) можно интерпретировать. Я думаю, что терминология ошибочна, поскольку вы говорите не о свойстве языка, а о том, как вы его используете. Но, похоже, это не очень важно для вопроса ...
— Jcora

«compiled» или «scripted» не является свойством языка программирования. Когда вы реализуете спецификацию языка, вы можете решить, хотите ли вы ее «скомпилировать» или «интерпретировать».
— Иван Кукир

1
При этом то, что я всегда интерпретировал как «язык сценариев», является основой этого определения. Возможно, словарь должен был быть «истолкован», но я всегда видел их один и тот же. webopedia.com/TERM/S/scripting_language.html
— Брэндон

Ответы:


15

Unity использует Mono за кулисами. Каждый раз, когда вы вносите изменения в свои скрипты на C # / UnityScript, он почти мгновенно перекомпилирует код.

Если вы посмотрите в каталог данных автономного проигрывателя Unity, то увидите, что он скомпилировал все сценарии в Assembly-CSharp.dll или аналогичную.

Так что да, C # компилируется.


Ах, я вижу .dll сейчас в каталоге данных. Это проясняет ситуацию.
— Брэндон Клэпп

5
+1 за фактический ответ на вопрос и не превращение его в напыщенный семантический матч по армрестлингу
— HumanCatfood

1
@BrandonClapp, если этот ответ решил ваш вопрос, пометьте его как правильный.
— petervaz

1
Извините за оживление, но как Unity справляется с загрузкой и выгрузкой скомпилированной DLL в редакторе? Или я должен начать новый вопрос?
— Джефф

-4

Во-первых, языки сценариев не обязательно являются интерпретируемыми языками. Некоторые языки сценариев, такие как Lua и Python, могут быть JIT-скомпилированы или интерпретированы.

И, что касается самого вопроса: потому что C # является языком сценариев, но Microsoft делает хорошую работу, чтобы он не выглядел как таковой.

В C # есть все, что нужно языку сценариев: динамическая типизация, JIT-компиляция, а не статическая компиляция, запускается на виртуальной машине ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.