Чем C # и UnityScript отличаются в разработке Unity? [закрыто]

13

Помимо очевидных языковых различий, чем отличаются UnityScript и C # при разработке игр на Unity3D?

  • Есть ли заметная разница в производительности?
  • Код UnityScript упакован как есть? Если да, то помогает ли это модальности игры?
  • Можно ли использовать библиотеки, разработанные для одного языка, при разработке на другом?
  • Можно ли смешивать два языка в одном проекте Unity; кодирование некоторых частей в C # и других в UnityScript?
Kostas
источник
Существует не пишущий компонент мудрый. Но C # допускает дополнительные вещи, такие как импорт DLL. Кроме этого это «выбор». И совершенно субъективно. Не забывайте, есть также Boo, в которой вы можете написать свой код.
Сидар
2
Полезный вопрос с объективными ответами - кажется несправедливым, что он был закрыт.
UpTheCreek
1
Есть две основные причины, по которым этот вопрос был закрыт, и они не связаны с полезностью вопроса или объективностью ответов. Во-первых, пост задает более одного несвязанного вопроса. Во-вторых, некоторые из заданных вопросов слишком ориентированы на обсуждение и / или два широких, чтобы быть подходящими как написано. Насколько «полезный» или популярный вопрос или насколько хороши ответы, не зависят от того, подходит ли этот вопрос для сайта.

Ответы:

12

Есть ли заметная разница в производительности?

Нет. Технически разница в производительности очень мала , но в большинстве случаев она не настолько существенна, чтобы основывать свой выбор языка.

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

Да. Если вы сохраняете структуру папок, рекомендованную разработчиком библиотеки, доступ к этой библиотеке возможен с любого языка. Это связано с порядком компиляции Unity . Некоторые функции в IDE, такие как автозаполнение, могут не работать для выбранной библиотеки. (РЕДАКТИРОВАТЬ: это можно исправить с помощью бесплатного плагина UnityVS для Visual Studio.)

Можно ли смешивать два языка в одном проекте Unity, кодируя некоторые части в C #, а другие в Javascript?

Опять да. Это быстро усложняется, поскольку вы должны убедиться, что все скомпилировано в правильном порядке. Хотя это технически возможно, я бы порекомендовал вам выбрать один язык и придерживаться его.

На каком языке лучше доступны специальные ресурсы для разработчиков игр (книги, сайты, форумы)?

Тяжело сказать. Просматривая форумы, я бы сказал, что в Javascript немного больше учебников и примеров кода. Код, как правило, довольно легко переносится на другой язык, и поскольку библиотеки могут использоваться на разных языках, это, скорее всего, не будет серьезной проблемой.

Lokkij
источник
8

Самый первый вопрос, который возникает у всех начинающих разработчиков Unity, это C # или JS. Всегда идите с C #.

Сейчас, вы можете подумать: «Но я не хочу изучать C #, и я уже немного знаю JavaScript».

Но нужно учесть, что Unity JavaScript - это не JavaScript. Это поверхностный вид синтаксиса ECMA над .NET CLR. Он не делает ни одной из классных вещей, которые JavaScript делает, например, анонимные вложения и ссылки на функции, как вы бы обычно их использовали. У него есть свои собственные массивы, которые не совпадают с обычными массивами .net, и вы столкнетесь со многими подводными камнями и ограничениями, которых вы могли бы просто избежать, используя C #. Unity JavaScript - это всего лишь слой синтаксиса с конфетами, предназначенный для того, чтобы .NET выглядел менее пугающим, не более того. Это принесет вам больше вреда, чем пользы.

Гренландия
источник
7

Прежде всего, я бы порекомендовал C # поверх JavaScript для программирования в Unity по двум основным причинам. Первая причина сводится к сильной / слабой разнице в типизации, которую вы как бы отклонили. Я думаю, что строгая типизация работает лучше, чем слабая типизация на концептуальном уровне, но, честно говоря, это большой аргумент, который есть у людей, и поэтому я сосредоточусь больше на конкретной практической проблеме: развертывании на iOS (и, возможно, на других платформах, но это только один я знаю точно) требует статической типизации. На самом деле Unity даже имеет директиву "#pragma strict", которая может заставить статическую типизацию в JavaScript по этой причине, но это только подводит меня ко второй причине ...

Во-вторых, JavaScript в Unity не совсем такой же, как JavaScript в браузере. Это создает проблемы, когда вы пытаетесь применить знания извне Unity (т.е. большинство ресурсов о JavaScript) для программирования в Unity. Вот почему многие разработчики Unity называют этот язык UnityScript.


Теперь, чтобы ответить на ваши конкретные вопросы:

Есть ли заметная разница в производительности?

Не совсем, нет ( некоторые детали )

Код javascript упакован как есть? И если да, то помогает ли это модальности игры?

Зависит от платформы, и нет, это не помогает модальности

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

Я так думаю (хотя мне никогда не нужно было этого делать, потому что все библиотеки, которые я использую, были запрограммированы на C #)

Можно ли смешивать два языка в одном проекте Unity, кодируя некоторые части в C #, а другие в Javascript?

Да (хотя я стараюсь избегать этого по соображениям согласованности)

jhocking
источник
dentedpixel.com/developer-diary/… возможно, захотите добавить это в свой ответ. Upvoted.
Серый
интересная линка, добавлено
jhocking