Решение проблем в редакторе. А чем именно вам не нравится Unity? Панель запуска в Unity

Я видел много истерии вокруг Unity (десктоп окружения, а не графического движка). Многие люди предпочитают Убунте, скажем, Linux Mint, именно потому что там MATE. Или выбирают сборки Ubuntu с GNOME/Xfce, объясняя это только тем, что не хотят использовать Unity. Сам я пользуюсь Unity на протяжении последних пяти месяцев и нахожу ее просто прекрасной DE.

Поначалу, само собой разумеется, было немного непривычно. Кое-какие вещи пришлось донастроить. Например, я сделал так, чтобы боковая панелька скрывалась, убрал отображение заголовков окон из верхней панели, настроил фильтры быстрого поиска, увеличил количество рабочих столов, и вроде еще какие-то мелочи , уже точно не помню. В результате все стало точно так же, как, скажем, в Xfce. Двигаешь окошки мышкой, сворачиваешь, разворачиваешь, между окнами переключаешься по Alt+Tab.

Ну разве что вместо кнопки «Пуск» — панелька с наиболее часто используемыми приложениями. А те приложения, что используются редко, можно быстро найти по имени. На самом деле, это намного удобнее традиционного древовидного меню в стиле Windows XP.

Потом пришло понимание, что в Unity есть много хоткеев. Подсказку по основным хоткеям можно посмотреть, нажав и подержав какое-то время клавишу Win. Перемещение окон, запуск приложений, переключение между приложениями и окнами, изменение размеров окон и так далее — в Unity все это можно сделать при помощи хоткеев. Если учесть наличие хоткеев у Google Chrome, Gnome Terminal, bash и IntelliJ IDEA , то мышки можно вообще не касаться.

Вообще, Unity — это такой хитро замаскированный тайловый оконный менеджер. Если пользователь привык все делать мышкой, он все будет делать мышкой, как и привык. Те же, кто долго пользовался Awesome, или Xmonad , оценят возможность делать все при помощи клавиатуры, а также эффективное использование места на экране.

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

Плюс ко всему этому, поскольку Unity является DE по умолчанию для Ubuntu, с ним все сразу хорошо из коробки, а что не хорошо, можно один раз настроить и забыть. Для сравнения, когда я пользовался i3, мне приходилось руками настраивать переключение раскладки, запуск Dropbox, Network Manager и так далее. Флешки приходилось монтировать либо руками, либо специально запускать pcmanfm. После обновлений постоянно что-то отваливалось. И это я еще не вспоминаю о проблемах с отображением Gimp/Skype или работу с несколькими мониторами. А в Unity все работает, притом предоставляются такие же возможности. Удобно!

Я еще могу понять людей, у которых пятилетнее железо, и поэтому им хочется чего-то легкого, типа того же i3 или Xfce. Ну или людей, которые уже сидят там под Mint, Fedora или SuSe. А так, не вижу причин не любить Unity. Может быть, просто я чего-то упускаю?

30 декабря 2016 в 07:43
  • Unity ,
  • Разработка игр

Геймдев - занятие по настоящему увлекательное, особенно когда в команде есть как опытные программисты, так и новички. В отличии от таких движков как Unreal и CryEngine, в Unity достаточно низкий порог вхождения, и зачастую ветераны.NET и новички начинают выяснять отношения, которые заканчиваются дракой с применением офисной мебели.

В этой статье я попытался собрать советы которые помогут вам и вашей команде договориться наконец о том, как надо писать код, и, надеюсь, хорошо посмеяться. И так, поехали!

1. Пиши на UnityScript

Один язык в проекте - это скучно. Разнообразь жизнь своих коллег, пусть учаться быть полиглотами. C# - это майкрософт, и вообще строгая типизация это не твое.

2. Не используй var

Сами Unity запрещают это делать, да и вообще непонятно, какого типа переменная. Когда тебе скажут про подсказки IntelliSense - закатывай глаза, майкрософт головного мозга! Твой Notepad++ этого не умеет.

3. Смешивай стили

Ну а что? Сами Unity нарушают C# Style Guide и фигачат camelCase в пропертях, чем ты хуже? Если используешь MonoDevelop, не забывай периодически менять табы на пробелы и обратно. При этом говори всем, что в MonoDevelop «настройки слетели» - про этот баг все знают!

4. Не пиши XML Doc комментарии

Они засоряют файл, а твой код должен быть понятен без дополнительных комментариев. И вообще, твой Notepad++ не поддреживает это всё. Если меняешь сигнатуру чужого метода, не обновляй XML Doc - так чтение автодокументации будет веселее.

5. Не используй namespace

Писать using - слишком муторно, и вообще зачем это делать, если можно обойтись без этого. Все скрипты должны лежать в папке Script - так их проще находить по алфавиту.

6. Связывай компоненты

Чем больше связей - тем лучше! Каждый компонент должен ссылаться на каждый другой компонент - зато так проще! У твоего персонажа должна быть ссылка на противника, дверь, гейм менеджер, ХП бар на канвасе, на любые другие объекты на сцене. А иначе как с этим работать?

7. Создавая референсы, прячь их через private GameObject myGameObject;

Так твой референс можно будет отредактировать только через редактор, а в коде они мешаться не будут. Когда окажется, что что-то надо все-таки поменять через код, просто переделай private на public.

8. Не используй паттерны проектирования, кроме singleton

Когда тебе говорят про Dependency Injection или другие паттерны, закатывай глаза. Какие нафиг паттерны, тут тебе не энтерпрайз!

9. GameObject.SendMessage - потрясающе удобный инструмент, используй его как можно чаще

По возможности собирай название метода из нескольких строк - так твоим коллегам будет веселее искать, откуда вызвался метод!

10. Используй UnityEvent везде, где это возможно

Стандартные event"ы - это для лохов, тем более они не отображаются в инспекторе. Unity не зря придумали свои ивенты.

Выставляй все через инспектор. Раздели свой код на части и выстави 5 разных методов при нажатии на кнопку - так будет веселее искать, по нажатию какой кнопки этот метод вызывается!

11. Подписываясь на событие через AddListener, забывай прописать RemoveListener

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

12. Кэшируй все компоненты на GameObject"ах

Даже если вы их не используете или используете один раз при нажатии на кнопку. Оптимизировать надо начинать как можно раньше! Не забывайте закэшировать transform; те, кто говорят, что transform уже закэширован - лжецы.

13. Не используй свойства

Свойства - это медленно, как вызов метода, а доступ к полю гораздо быстрее. Все преимущества свойств - выдуманы. Когда тебе кто-то начнет говорить про private set, обратную совместимость и необходимость рекомпиляции assembly в случае изменения поля на свойство, смотри на них как на дураков - какая еще компиляция, у нас геймдев а не энтерпрайз, мы тут dll не используем! И вообще, когда ты последний раз менял поле на свойство?

14. Не используй foreach

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

15. Не используй Linq

Linq - это медленно, сложно, и вообще это майкрософт. For на 10 строк - это гораздо красивее (foreach мы же не используем - забыл?). Если кто-то посмеет написать Query Expressions, то смотри на него как на идиота - майэскюЭль с Юнити перепутал!

16. Не используй строки

Строка - это выделение памяти, которую потом будет собирать GC. Используй char - не зря же ты в универе сишку проходил. Никакой юникод тебе не нужен - нечего лишние байты гонять, все равно у тебя bitmap шрифты.

17. Не используй Generics

Дженерики - это медленно и сложно, а Generic Constraints - еще сложнее. Какая нафиг ковариантность и контравариантность? У нас Юнити, тут этого нет! Когда нужны классы с разным типом, храните имя класса в переменной и находите его с помощью Type.GetType().

18. Не используй Coroutines без надобности

Они не работают на неактивных объектах, и вообще, создают дополнительную нагрузку. Храни состояние в булевых переменных, и проверяй их в Update - так гораздо удобнее, ведь все собрано в одном месте.

19. Как только выходит новая версия движка, ставь ее и закоммить папку ProjectSettings

Пусть твои коллеги учаться держать обновленный инструментарий. Ну и что, что проект сдавать через 2 дня, а новая версия с багами? Не твоя это проблема, что Unity не могут зарелизить нормально! Зато там есть новая система частиц, с которой тебе хочется поиграться.

20. Не используй текстовую сериализацию ассетов

Она тормозит редактор. Бинарная сериализация - это гораздо быстрее. Когда кто-то скажет про merge, закати глаза - он что, дурак, сцену мержить? Когда смержить нужно будет тебе, просто откати чужие изменения. Надо было говорить, над каким ассетом работаешь, что бы другие не трогали!

Достаточно популярна. Если ранее компьютерные игры были лишь развлечением для узкого круга любителей, то сейчас данная область выходит на абсолютно новый уровень. Все больше людей увлекаются компьютерными играми, постоянно выходят проекты, которые подходят для определенных возрастов и целевых групп (например, семейные игры).

Естественно, за этим кто-то стоит - в большинстве случаев это целая компания, состоящая из нескольких отделений, каждое из которых занимается своей собственной деятельностью. Совместными усилиями они творят наиболее выдающиеся и привлекательные компьютерные игры современности. Однако стоит отметить, что в последнее время появилось большое количество инди-игр - проектов от независимых разработчиков. Это может быть и один человек, и небольшая группа единомышленников, но самое главное - у них нет огромного бюджета, сотен рабочих рук с высшим узкоспециализированным образованием. И сейчас каждый может написать свою собственную игру, ведь существуют как специальные рабочие среды, так и готовые ядра, например игровой движок Unity. В данной статье вы узнаете, что он собой представляет и зачем он нужен.

Ядро игры

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

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

Почему Unity?

Существует огромное количество разнообразных движков, которые доступны в сети либо частично бесплатно, либо полностью платно. Они позволят вам создавать проекты как в 2D, так и в 3D, откроют вам доступ к различным возможностям и так далее. Но почему же среди них вам стоит выбрать именно игровой движок Unity, а не какой-либо другой?

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

Преимущества Unity

Unity - новый движок для создания 3D игр. Многие задаются вопросом о том, почему нужно выбрать именно его. Как уже было сказано ранее, вас никто не заставляет останавливать свой выбор именно на нем. Однако сейчас вы узнаете, чем же он так выделяется на фоне остальных.

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

Отдельно стоит упомянуть уровень графики, которую можно создать в игре - он довольно высок в сравнении с большинством других движков. Ну и, конечно же, стоит отметить высочайший уровень физики - вы сможете создать проект не хуже любого современного шедевра, естественно, при должном умении.

В завершение стоит сказать про стоимость - именно она становится для многих начинающих разработчиков. В данном случае она не слишком высока - всего полторы тысячи долларов. При желании вы можете воспользоваться бесплатной версией - она полностью функциональна, но не имеет определенного количества полезных функций. Также готовый проект постоянно будет отображать эмблему Unity в процессе игры. Теперь вы понимаете, почему Unity 3D - популярный игровой движок. Но неужели у него нет минусов? Сейчас и об этом поговорим.

Минусы Unity

Многие пытались найти недостатки у этого движка, но с трудом жалоб накопилось лишь на одну - закрытость исходного кода. В каком-то смысле это действительно минусы - вы можете пользоваться только тем ядром, которое вам предлагает разработчик, не можете в него вносить никакие изменения, даже если вы знаете, как это сделать. И даже с учетом того, что вы заплатили полторы тысячи долларов - лицензия все равно не дает вам доступа в само ядро. Но если смотреть с другой стороны, то практически ни один современный движок не дает вам доступ к коду ядра, так что данный минус можно считать серьезным недостатком с большой натяжкой. А других недочетов у этого прекрасного движка найти не удается.

Использование Unity

Про использование данного движка уже было сказано ранее - IDE для него просто прекрасная. Редко можно встретить такую функциональную среду разработки, которая не будет перегружена лишними деталями, не будет абсолютно голой и неудобной. В Unity все сделано просто прекрасно - вы сразу же можете получить доступ и к редактору сцен игры, и к игровым объектам, и даже к скриптам, к ним применяемым. Вы можете прямо в IDE просмотреть в реальном времени отрывок того, над чем вы работали. В этом у Unity попросту нет конкурентов - данный движок великолепен.

Русский Unity

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

Добавление скриптов

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

Вместо Unity будет GNOME Shell. 6 лет Шаттлворт экспериментировал на пользователях и наконец-то оболочка И тут Шаттлворт решает выкинуть Unity на помойку. ¯\_(ツ)_/¯

Эксперты уверены, что сомнительное решение негативно скажется на популярности Ubuntu. А она, если верить Distrowatch, скатывается в никуда уже который месяц. Правда, если взглянуть на другой рейтинг - - то окажется, что дистрибутив Ubuntu как был самым популярным, так и остается и будет оставаться еще долго, ибо достойных конкурентов как не было, так и не предвидится.

Так какие же есть основания у экспертов говорить о том, что Ubuntu ждут тяжелые времена из-за похорон Unity?

Панель запуска в Unity

Она на грани совершенства. Круче только в Mac OS. Панель запуска красивая, аккуратная и гибкая в настройке. Даже без дополнительных инструментов ее легко настроить под себя, а с помощью стороннего инструмента Unity Tweak Tool можно вообще творить чудеса.

Быстрые списки Unity

Другая ултраполезная фича - быстрые списки. Каждая иконка на панели запуска имеет контекст, который можно вызвать правой кнопкой мыши и тем самым сэкономить немало времени. Например, можно в два клика сменить проигрываемый трек или отмонтировать флешку. Освоив быстрые списки юзер сам становится очень быстрым. Любое задание выполняется практические моментально.

Unity HUD (Heads-up Display)

Сомнительная фича, но многим нравилась. Некоторым полюбилась настолько, что расставание будет довольно мучительным. Если кто-то не в курсе, HUD позволял быстро добраться до нужного пункта в меню просто набирая первые буквы его названия. В сложных многоуровневых меню HUD действительно значительно упрощал и ускорял навигацию.

Горячие клавиши

Многие из них использовались для управления Launcher, Dash и HUD, еще более ускоряя работу и повышая производительность труда на компьютере. 6 лет ушло на запоминания хоткеев, а куда теперь деть эти знания?

Выводы

О преимуществах Unity можно говорить бесконечно. Столько лет ушло на привыкание, столько лет потребовалось на освоение хитроумных клавиатурных комбинаций! А как долго мы боролись за то, чтобы из Unity удалили слежку И добились-таки! И вот Шаттлворт встает не с той ноги и одним росчерком пера лишает нас полюбившейся оболочки, которая общими усилиями стала почти идеальной. И ради чего? Что, GNOME Shell - предел мечтаний линуксоидов?

Конечно, Unity - это Open Source. В любом случае, разработка будет продолжена и GNOME Shell можно будет заменить на Unity своими силами. Не исключено, что появятся дистрибутивы, где Unity будет использоваться из коробки по умолчанию. Но сможет ли Unity так же успешно своеобразно развиваться без Шаттлворта? И сможет ли дистрибутив Ubuntu, от которого оторвали кусок, сохранять целостность, высокий уровень usability и

Статьи по теме: