Помимо очевидных языковых различий, чем отличаются UnityScript и C # при разработке игр на Unity3D?
- Есть ли заметная разница в производительности?
- Код UnityScript упакован как есть? Если да, то помогает ли это модальности игры?
- Можно ли использовать библиотеки, разработанные для одного языка, при разработке на другом?
- Можно ли смешивать два языка в одном проекте Unity; кодирование некоторых частей в C # и других в UnityScript?
unity
c#
performance
unityscript
Kostas
источник
источник
Ответы:
Есть ли заметная разница в производительности?
Нет. Технически разница в производительности очень мала , но в большинстве случаев она не настолько существенна, чтобы основывать свой выбор языка.
Можно ли использовать библиотеки, разработанные для одного языка, при разработке на другом?
Да. Если вы сохраняете структуру папок, рекомендованную разработчиком библиотеки, доступ к этой библиотеке возможен с любого языка. Это связано с порядком компиляции Unity . Некоторые функции в IDE, такие как автозаполнение, могут не работать для выбранной библиотеки. (РЕДАКТИРОВАТЬ: это можно исправить с помощью бесплатного плагина UnityVS для Visual Studio.)
Можно ли смешивать два языка в одном проекте Unity, кодируя некоторые части в C #, а другие в Javascript?
Опять да. Это быстро усложняется, поскольку вы должны убедиться, что все скомпилировано в правильном порядке. Хотя это технически возможно, я бы порекомендовал вам выбрать один язык и придерживаться его.
На каком языке лучше доступны специальные ресурсы для разработчиков игр (книги, сайты, форумы)?
Тяжело сказать. Просматривая форумы, я бы сказал, что в Javascript немного больше учебников и примеров кода. Код, как правило, довольно легко переносится на другой язык, и поскольку библиотеки могут использоваться на разных языках, это, скорее всего, не будет серьезной проблемой.
источник
Самый первый вопрос, который возникает у всех начинающих разработчиков Unity, это C # или JS. Всегда идите с C #.
Сейчас, вы можете подумать: «Но я не хочу изучать C #, и я уже немного знаю JavaScript».
Но нужно учесть, что Unity JavaScript - это не JavaScript. Это поверхностный вид синтаксиса ECMA над .NET CLR. Он не делает ни одной из классных вещей, которые JavaScript делает, например, анонимные вложения и ссылки на функции, как вы бы обычно их использовали. У него есть свои собственные массивы, которые не совпадают с обычными массивами .net, и вы столкнетесь со многими подводными камнями и ограничениями, которых вы могли бы просто избежать, используя C #. Unity JavaScript - это всего лишь слой синтаксиса с конфетами, предназначенный для того, чтобы .NET выглядел менее пугающим, не более того. Это принесет вам больше вреда, чем пользы.
источник
Прежде всего, я бы порекомендовал C # поверх JavaScript для программирования в Unity по двум основным причинам. Первая причина сводится к сильной / слабой разнице в типизации, которую вы как бы отклонили. Я думаю, что строгая типизация работает лучше, чем слабая типизация на концептуальном уровне, но, честно говоря, это большой аргумент, который есть у людей, и поэтому я сосредоточусь больше на конкретной практической проблеме: развертывании на iOS (и, возможно, на других платформах, но это только один я знаю точно) требует статической типизации. На самом деле Unity даже имеет директиву "#pragma strict", которая может заставить статическую типизацию в JavaScript по этой причине, но это только подводит меня ко второй причине ...
Во-вторых, JavaScript в Unity не совсем такой же, как JavaScript в браузере. Это создает проблемы, когда вы пытаетесь применить знания извне Unity (т.е. большинство ресурсов о JavaScript) для программирования в Unity. Вот почему многие разработчики Unity называют этот язык UnityScript.
Теперь, чтобы ответить на ваши конкретные вопросы:
Не совсем, нет ( некоторые детали )
Зависит от платформы, и нет, это не помогает модальности
Я так думаю (хотя мне никогда не нужно было этого делать, потому что все библиотеки, которые я использую, были запрограммированы на C #)
Да (хотя я стараюсь избегать этого по соображениям согласованности)
источник