Какое самое серьезное ограничение Unity? [закрыто]

30

Прочитав этот горячий вопрос о Unity, UDK и ID, мне любопытно узнать: каковы неоднократные, наиболее вредные ограничения Unity?

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

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

Мысли?

ashes999
источник
1
Д.В. но комментариев нет, а на 2,5 года вопрос? Почему это?
ashes999
Наверное, просто случайно спотыкается об этом. Этот вопрос явно основан на мнении с самого начала. Сказать «чтобы этот вопрос не был субъективным» не означает, что он не является субъективным, потому что самый повторный нарушитель, которого вы считаете наиболее раздражающим, не будет таким же, как и главный нарушитель следующего пользователя. Такие списки практически ничего не значат и помогают только поддерживать мифы, например, что если все скажут: «X - это вещь», но X исправится в обновлении Unity через неделю, но ответы с самым высоким рейтингом, вероятно, останутся неотредактированными с «X is». ОГРОМНАЯ проблема "на вершине своих списков даже годы спустя.
LearnCocos2D
Плюс, какой ответ приемлем как правильный ? Если вы думаете об этом, ни один из ответов не следует принимать в качестве ответа, потому что нет правильного способа ответить на этот вопрос. Это, вероятно, показатель № 1 субъективного вопроса.
LearnCocos2D

Ответы:

33

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

Что, как говорится:

1) Плохая интеграция управления исходным кодом и инструменты большой команды. Как вы упомянули, много недифференцируемых двоичных файлов. Редактор игнорирует флаг только для чтения для файлов сцены. Фактические файлы, которые вы должны проверить, не сразу очевидны. Часть этого исправлена ​​в 3.5 с интеграцией SVN и P4. Есть также обещания текстовых форматов сцены. ОБНОВЛЕНИЕ: текстовый формат сцены теперь доступен в Pro-версии Unity. Смотрите здесь .

2) Медленные, ориентированные на программиста инструменты пользовательского интерфейса. У каждого виджета есть свой собственный вызов отрисовки, который накладывает большие затраты на мобильные платформы. Не существует таких концепций, как панели с анимацией и все другие причудливые вещи, которые заставляют пользовательский интерфейс чувствовать себя хорошо, не катаясь самостоятельно. На дорожной карте обещана новая система пользовательского интерфейса (3.6?). Есть некоторые сторонние инструменты, но они не очень хороши.

3) Действительно элементарное редактирование частиц. Тем не менее, они обещают новую систему на основе кривой в 3.5. ОБНОВЛЕНИЕ: Эта система на основе кривой, называемая Shuriken, теперь доступна. Смотрите здесь .

4) Вы не можете вкладывать сборные конструкции. Небольшая проблема, но когда вы привыкли работать с готовой системой и всей мощью, которую она вам предоставляет, это может расстроить вас. Это было обещано, но без конкретной даты. ОБНОВЛЕНИЕ: Теперь вы можете вкладывать сборные.

5) Практически невозможно получить игру для iOS под предельным уровнем. Один двоичный файл походит на 8 мегабайт в лучшем случае. Это не легко исправить.

6) Нулевые ссылки исключают платформы, которые не допускают JIT-скомпилированный код. В автономных или веб-версиях NRE ловятся. Это все еще неперехваченное исключение, но, по крайней мере, приложение будет продолжать работать. На iOS вылетает устройство. Вы можете перевести его в режим отладки и перехватить некоторые типы исключений, но производительность страдает.

7) При работе над многоплатформенной игрой, когда вы меняете цели сборки, вы должны заново импортировать все, что занимает много времени. Я работал над этим, фактически просто имея несколько копий проекта на диске. По-видимому, в 3.5 будет импортирован сервер активов.

тетрада
источник
1
@iamcreasy, оденься, чувак. «Хотя Dropbox функционирует как служба хранения, его основное внимание уделяется синхронизации и совместному использованию. Он поддерживает историю изменений, поэтому файлы, удаленные из папки Dropbox, можно восстановить с любого из синхронизированных компьютеров. [33] [34] Контроль версий Dropbox также помогает пользователи знают историю файла, с которым они могут работать в настоящее время, что позволяет нескольким пользователям редактировать и повторно публиковать файлы без осложнений, теряя свою прежнюю форму. [35] История версий ограничена 30 днями. Платный вариант для доступна неограниченная история версий под названием «Pack-Rat». -Википедия
Инженер
6
Может быть, я несправедлив, но я думаю, что NullReferenceExceptions - это ошибка программиста; Вы должны проверять свои входящие параметры. Конечно, это было бы легче реализовать, если бы у нас была какая-то надстройка для анализа кода для MonoDevelop, как вы получаете в VisualStudio ...
chrish
1
@ ashes999 Всегда есть какая-то терминология, которую вам придется изучить, с новой технологией. Слова - наши ручки для понятий. То же самое касается даже основной Flash. Шумиха вокруг юзабилити Unity не зря, хотя. Это снижает барьеры для входа для непрофессиональных разработчиков и позволяет профессионалам делать намного больше, гораздо больше с гораздо меньшими затратами. Не слишком переживайте по поводу предполагаемых ограничений. Скорее всего, большинство из них может даже не стать для вас препятствием. Единственное, что меня беспокоит, - это исключения нулевых указателей, которые можно отлаживать.
инженер
3
Как теперь ответ Тедрада в Unity 4.1.x? Кто-нибудь знает?
Sil
1
Когда вы говорите: «Теперь вы можете вкладывать префабы» На что вы ссылаетесь? Может быть, эта функциональность была удалена с момента последнего редактирования вопроса? Или вы имеете в виду это дополнение ?
NauticalMile
6

Когда я и мой друг оценили Unity для более крупного проекта, мы обнаружили, что одной из самых больших проблем была производительность с их программной оболочкой. Если я правильно помню, у нас было что-то вроде 10 анимированных объектов с примерно 1000 вертами каждый, и я получал 20 кадров в секунду при использовании среднего компьютера ... Не очень хорошо ...

Кап. красный
источник
Как давно это было? Кажется, что почти в каждой версии есть что-то в примечаниях к выпуску об улучшенной производительности скинов. В лице iOS они переключились со скинов на GPU на FPU, поскольку это было намного быстрее.
Тетрада
Это было месяц назад ...
Cpt.
6

Моей проблемой номер один был повторный контроль версий. Решение? Просто используйте DropBox для проектов Unity. При условии, что вы настроили его правильно (то есть заплатили за услугу «PackRat»), он сохраняет историю изменений. Кроме того, намного проще сотрудничать с дизайнерами, так как они не хотят знать о традиционном контроле версий, DropBox предлагает им прозрачное решение. Недостатком является то, что разветвления / слияния не поддерживаются так, как они есть, например. мерзавец, свн.

Для тех, кто сомневается ...

В то время как Dropbox функционирует как служба хранения, его основное внимание уделяется синхронизации и совместному использованию. Он поддерживает историю изменений, поэтому файлы, удаленные из папки Dropbox, могут быть восстановлены с любого из синхронизированных компьютеров. [33] [34] Контроль версий Dropbox также помогает пользователям узнать историю файла, с которым они могут работать в данный момент, позволяя нескольким пользователям редактировать и повторно публиковать файлы без осложнений, теряя свою прежнюю форму. [35] История версий ограничена 30 днями. Доступна платная опция для неограниченной истории версий под названием «Pack-Rat».

Смотрите здесь для прочной ссылки с форумов Unity.

Кроме этого, единственное, что меня раздражает в Unity, это то, что у него нет точки входа в приложение так, как это делает C (main ()) или AS3 (класс документа). Но вы просто помещаете свою инициализацию приложения в пустой GameObject, не так уж и сложно. Поток кода немного отличается от этой внутренней структуры, но, опять же, нет ничего слишком сложного, чтобы справиться с ним.

Что касается лицензии, большинство людей не осознают (и я особенно имею в виду мелкие инди-операции и любителей, у которых может не быть денег, чтобы заплатить за профессиональную лицензию и надстройку менеджера активов), что вы можете делать практически все, что могли когда-нибудь хочу с основной / бесплатной версией. На самом деле, это не какой-то огромный барьер, команда Unity была очень щедрой.

инженер
источник
1
Dropbox, йеч. Но +1 - это по сути то, что я был после.
ashes999
Хе-хе, я думаю, что любой разработчик чувствовал бы то же самое. Но эй, если он сделает свою работу ...
Инженер
2
Мы используем Git с Unity. Для настройки файлов .gitignore требуется немного усилий, но он работает и предоставляет полный набор функций VCS.
Килотан
2
Мы используем Mercurial (с BitBucket) с Unity и прекрасно работает, когда вы правильно настроите файлы .hgignore.
JD
@JD (& Kylotan) - Как вы справились с проблемой, когда файлы сцен не были объединяемыми?
UpTheCreek
6

Я подумал о другом серьезном ограничении, которое раздражает меня ежедневно, поэтому я опубликую это отдельно.

Unity3D хочет, чтобы вы редактировали свои скрипты в MonoDevelop, в частности, в старой версии MonoDevelop, которую они распространяют. Функциональность «Поиск в файлах» в этой версии нарушена, поскольку ее использование обычно приводит к зависанию среды IDE, что делает ее бесполезной.

Это будет большим раздражением для любого движка, но для Unity это серьезное раздражение, потому что оно поощряет очень децентрализованную систему отдельных компонентов, действующих на различные игровые объекты. Но как вы можете узнать, какие компоненты имеют доступ к каким свойствам, если вы не можете даже выполнить поиск по различным компонентам?

РЕДАКТИРОВАТЬ: Этот ответ был опубликован в 2011 году: к счастью, ошибка поиска в файлах была исправлена ​​некоторое время назад. И, как говорят комментаторы, вы можете редактировать свой код в других редакторах (хотя ваш выбор ограничен, если вы хотите иметь возможность работать в отладчике).

Kylotan
источник
1
Для чего бы это ни стоило, вы можете использовать любую IDE, какую захотите, с Unity (я использую Visual Studio Pro). Но если вы хотите использовать отладчик, вы ограничены MonoDevelop.
Тетрад
1
Да, отладчик очень важен (хотя MonoDevelop не так уж и хорош). Кроме того, к сожалению, он говорит, что не работает с Visual Studio Express. Я не знаю ни одной другой C # IDE, которую используют люди. Но на самом деле тот, который поставляется с Unity, должен быть в лучшей форме.
Kylotan
Вы также можете использовать другие текстовые редакторы, такие как Sublime Texthttp: //wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
Terrance
Я не пробовал, но я читал, что теперь есть способ использовать Visual Studio для отладки (я думаю, с помощью плагина). Может быть, это только для версии Pro, хотя я не уверен.
Кристиан
FWIW, UnityVS делает интеграцию Visual Studio намного более гладкой. Вы можете отлаживать, перешагивать и т. Д.
Basic
5

Для меня самое серьезное ограничение в лицензионном соглашении:

«Ограничения на азартные игры Вы не можете распространять или публиковать Контент Лицензиата в связи с азартными играми без отдельной лицензии от Unity».

Это означает, что, начиная с версии 4.0, вы не можете использовать Unity для игр, в которых участвуют деньги / шанс, если только вы или ваши клиенты не готовы платить дополнительную лицензионную плату, которая оговаривается в каждом конкретном случае. Т.е. они видят, сколько вы стоите, и соответственно облагают вас налогом, причем 6 цифр указаны.

Больше всего беспокоит тот, кто знает, что они добавят в лицензионное соглашение v5. Возможно, все социальные игры? Возможно, все многопользовательские игры?

Любой разработчик, использующий Unity, рискует быть выкупленным в будущем выпуске.

Джон Литтл
источник
4
Любые сторонние инструменты или программное обеспечение могут добавлять (или удалять) положения EULA в новых версиях. Я действительно не понимаю, как это относится к Unity. Кроме того, без подтверждающих доказательств кажется странным утверждать, что пункт об отсутствии азартных игр является достаточно серьезным, чтобы быть самым ужасным ограничением программного обеспечения в целом, что и было тем, к чему стремился исходный (по общему признанию теперь не по теме) вопрос. Если большинство игр Unity не основаны на азартных играх в качестве основной функции, этот ответ больше напоминает напыщенную речь.
Джош
4

Хороший вопрос. Для меня самая большая проблема - это графический интерфейс. Я не возражаю против того, чтобы быть ориентированным на программиста, но я действительно возражаю против ужасного способа, которым объекты GUI являются функциями, а не объектом, и что обработка GUI заключена в одном вызове функции, который используется для рендеринга и обработки событий, и что нет никакой интеграции с системой ввода (то есть клики на элементах GUI могут интерпретироваться как клики в мире) и т. д.

Вторичной проблемой является отсутствие адекватной поддержки контроля версий (в основном потому, что система использует макет каталога в качестве макета проекта, что приводит к путанице в VCS при перемещении или переименовании объектов), но это можно обойти и не является проблемой для все.

Kylotan
источник
Вы можете запросить систему графического интерфейса, чтобы узнать, был ли он использован щелчком, а затем проигнорировать щелчок в вашем коде выбора объекта мира. Громоздко, но работает.
Шон Мидлдич
Как бы Вы это сделали?
Kylotan
У входного системного объекта есть свойство для получения идентификатора «горячего» элемента, который будет равен нулю, если под курсором нет элемента GUI. Забудьте точное имя свойства, хотя оно должно быть в ссылке на скрипты Unity.
Шон Миддледич