Вопрос

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

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

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

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

Исключение MISSINGMETHOD exception:Метод не найден:'Система.Дата-время.Значение'.Boo.Lang.Runtime.Динамическая выдача.MethodDispatcherFactory.ProduceExtensionDispatcher ()

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

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

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

Это было полезно?

Решение

Unity не использует "настоящий" Javascript как таковой.Видишь:

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

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

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

Другие советы

Если вы хотите стать разработчиком в 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, но обратное намного сложнее (не невозможно, просто сложнее).

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top