Какой лучший язык сценариев для Unity3D - PullRequest
5 голосов
/ 26 февраля 2012

Я начинаю с разработки игр с использованием Unity3d и вижу, что есть 3 поддерживаемых языка для создания скриптов: C #, unityscript и Boo ...

хотя, исходя из прошлого веб-дизайна, я, очевидно, использовал javascript, но после нескольких попыток я заметил, что Unity3d действительно не полностью поддерживает язык сценариев и некоторые элементы, такие как new Date().valueOf() и некоторые другие операторы внутри такие методы, как атрибут arguments и многие другие, не будут работать должным образом, также, похоже, в моем файле не может быть метода-оболочки, который включает все другие методы, такие как:

(function (scope) {
    function Start() {
        ...
    }
    ...
}(this));

и при использовании чего-то вроде new Date().valueOf(), действительного в JS, я получаю:

MissingMethodException: метод не найден: 'System.DateTime.valueOf'. Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher ()

Так, возможно, компилятор превращает этот начальный код "Unixscript" в язык Boo? так что, возможно, Boo - это правильный «нативный» выбор, и, возможно, сам по себе unityscript не лучший путь для разработки приложений unity3d?

Я думал о языке, который полностью поддерживает все известные нативные классы и методы, которые будут работать без проблем?

Извините за любые ошибки, упомянутые выше, и, пожалуйста, дайте мне знать, что вы думаете.

Ответы [ 5 ]

9 голосов
/ 11 января 2015

Если вы хотите стать разработчиком в Unity и строить свою карьеру на нем, изучите C # и используйте его - не тратьте свое время на UnityScript. Вы можете использовать C # вне Unity для программирования. Если ваша основная карьера уже связана с веб-разработкой (или будет), то продолжайте использовать javascript, поскольку в конечном счете C # и UnityScript имеют одинаковую функциональность, но C # гораздо более широко используется для программирования игр и приложений.

Большинство активов в магазине, которые я использовал, являются C # или предлагают как JS, так и C #. Смешивание между языками создает серьезные проблемы с зависимостями, потому что для использования класса на любом языке он должен быть уже обработан в порядке загрузки скриптов Unity. Чтобы использовать определенный класс Javascript в C #, этот файл сценария должен быть обработан до файла сценария C #. Если затем классу javscript понадобится что-то из класса C #, вам придется найти способы обойти это, потому что это просто больше невозможно из файла javascript. У Unity есть способы определить порядок скриптов.

Я подумал, что предупрежу вас о смешивании C # с UnityScript, потому что, если вы не сосредоточитесь на одном или другом, вы столкнетесь с этой проблемой. В конечном счете, C # является средним звеном между неоднозначными языками, такими как VB и JavaScript, и педантичными языками, такими как C ++ (у меня есть опыт работы с C / C ++ около 10 лет).

Ваш заголовок «Что такое лучший ххх» приводит к самоуверенным ответам, но я стараюсь дать лучший совет, не будучи субъективным. C # позволит вам продолжить, даже если через год Unity уйдет. UnityScript / JavaScript позволит вам стать веб-разработчиком. Разработчик C # может легко перейти на UnityScript / JavaScript, но наоборот гораздо сложнее (не невозможно, просто сложнее).

9 голосов
/ 26 февраля 2012

Unity не использует «настоящий» Javascript как таковой.См .:

http://forum.unity3d.com/threads/1117-Javascript-Version

UnityScript основан на JavaScript 2.0.Не хватает нескольких вещей (операторы switch и т. Д.), Но они получают половину скорости C ++, что намного быстрее, чем Mozilla.

Как только вы привыкнете к этому, разработайте в JS единствоочень быстро и гибко ... но, конечно, если вы собираетесь разрабатывать нативные компоненты или взаимодействовать с чем-либо в C, вам нужно использовать C # (в конце концов, C # не сложен в изучении).

3 голосов
/ 26 февраля 2012

Вы должны использовать c #. Это популярный, зрелый, родной для .NET. C # - это то, что используют большие команды. Изучение c # будет полезно в будущем. JS в Unity3D не является настоящим JS, как уже упоминалось, и никто не слышал о Boo.

1 голос
/ 26 февраля 2012

JS - самый популярный язык для использования с Unity.Но язык реализован в Mono, и поэтому любые ограничения в этой реализации будут влиять и на сценарии Unity.

Я не знаю, как работает реализация JS Mono, но, судя по сообщению об ошибке,по крайней мере, использует типы данных, изначально определенные для Boo.Тем не менее, это не означает, что JS «превратился в Boo».Оба скомпилированы в один и тот же байт-код, который JIT'ed и выполняется средой выполнения Mono.Так что ни один язык не является «более родным», чем другой.

0 голосов
/ 09 апреля 2012

Ознакомьтесь с преимуществами и недостатками использования c # и сценариев Java от здесь . C # немного быстрее, чем JavaScript, и вы получаете дополнительные функции, предоставляемые C #. здесь .

можно узнать мнение народа.

Разработка с использованием c # имеет преимущество Visual Studio 2010. Она обеспечивает лучшую функцию завершения кода, чем разработка Mono.

Только в JavaScript переменные могут иметь неопределенный тип. Это происходит только в том случае, если вы не присваиваете значение при объявлении переменной.

Производительность ниже с динамически типизированными переменными, и вы можете столкнуться с проблемами приведения. Если это проблема, используйте #pragma строго.

...