Леха & Рома | Доведем от джуна до сеньора в Unity
473 subscribers
27 photos
8 links
Download Telegram
Доброго дня и хороших выходных, котаны)

У нас с Ромой скоро стартует интенсив. Ваша активность под недавним постом о навыках просто 🥰

Выполняю обещание и рассказываю поподробнее про программу курса👇

У нас будет 2 лекции + закрепление материала через дз и 2 дня практики:

Лекция №1 - Написание расширений для редактора при помощи CustomEditor и визуализация данных с OnSceneGUI + Handles
За два часа разберем:
- Структуру расширений редактора;
- Все возможные элементы, которые используются в кастомном инспекторе;
- GUILayoutOption для более точной настройки элементов;
- Немного GUI. skin для создания сочных отдельных блоков;
- Горизонтальные и вертикальные группы;
- Создание красивых кнопок с любыми иконками или значками;
- Создание блоков с возможностью их сворачивания;
- Визуализация данных при помощи OnSceneGUI + Handles;
- Практическая отработка навыков на 2-3 примерах.
В конце отвечу на все ваши вопросы)

Лекция №2 - Написание расширений в отдельных окнах при помощи EditorWindow.
За 2-3 часа разберем:
- В чем отличие кастомизации инспектора от написания отдельных окон;
- Как создать дополнительные окна Unity, которые открываются из меню;
- Как зонировать окно;
- Модификацию внешнего вида окна;
- Пак небольших уникальных элементов;
- Как построить сетку и рисовать внутри окна;
- Напишем 3 расширения для Unity
Ну и, конечно, отвечу на все вопросы.

Практические дни

На два полных выходных (10 и 11 декабря) мы разобьём вас на команды, которые будут решать сложную техническую задачу. Параллельно с этим Code Review ваших работ на протяжении всего дня.

А ещё всем закину свой pdf, в котором собрал всю документацию по разработке расширений)

Пост выходит слишком большим и пришлось чуть сократить, в курсе будет ещё больше приятностей :3

Как вам план? Уже во вторник стартует жесткая и плотная работа в Dungeon, не призываю, но и не хочу, чтобы потом кто-то обижался, из 40 мест осталось совсем немного. Все подробности здесь
🔥21👍4🤡2👏1🤔1👌1
ЗАВТРА СТАРТУЕМ

Котаны, час Х близок. Уже завтра начнём прокачивать Unity, и врата в ВАЛЬХАЛЛУ 5-дневный напильник для вас откроются.

Осталась пара свободных мест, кто хочет залететь, ещё есть шанс ворваться. Все подробности здесь!

А я пойду завершать финальные приготовления, страдать х*йней эту неделю я вам точно не дам 🔥
🔥13👍3👌2🤔1🤡1
Фух, привет, котаны 😼

Потерялся на неделю, но не из-за безделья. Плотно поработал с ребятами на тренинге по созданию расширений для Unity. Рассказываю, как все прошло:

Я подготовил материала на 4 часа по два на каждую лекцию (ага, если бы…), но так получилось, что на первой лекции за 3 часа я объяснил только процентов 80 из всего материала.

Пришлось в срочном порядке провести ещё одну часовую лекцию сверху на следующий день, из-за чего финальная лекция сдвинулась на пятницу, впритык к практикуму.

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

Дальше была ПРАКТИКА. Распределили всех на команды, каждая из которых должна была запилить своё расширение для постройки уровня. Суть расширения: Префабы закидываются в специальную сгенерированную папку, расширение их вытягивает и строит грид с превьюшками, из которого можно выбирать устанавливаемый префаб, причем у нас таких каталогов может быть несколько, переключаются при помощи тулбара.

Ребята бились над задачей как львиные тигры, а я 2 дня нон-стоп был на саппорте и помогал разруливать проблемы, с которыми команды сталкивались.

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

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

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

В общем и целом ребята оценили тренинг по достоинству, о чем говорят душевные отзывы, которые греют сердце. Всем спасибо, было пизд*то! :3
🔥44👍6🤯21
А вот и реальное расширение подъехало

Очень хочу показать вам, как работает расширение от команды ISeniorLvlGodAzurRank8, пацаны вообще ребята, они сделали его за 2 дня практики. Тут respect+ не иначе, поддержите ребят 👍

Ну и пишите в комментах, что думаете о расширении и хотите ли его подробный разбор

https://www.youtube.com/watch?v=op6OagFavPs
👍22🔥4😁2
ПРАКТИЧЕСКАЯ ЧАСТЬ 🧑‍💻

Всем привет) Зафиналиваю рассказ об интенсиве, и наконец настала очередь практики. Собсна, “Какое было задание?”. Задание дал по харду: “Написать расширение, помогающее левелдизайнеру строить уровни”. Давайте закину вам ТЗ, может кто-то захочет повторить))

1. Размещаемые объекты должны быть префабами для удобства настройки геймплея;
2. Префабы должны браться из сгенерированной папки, куда разработчик поместит префаб после его настройки;
3. В расширении префабы выводятся в сетку, которая должна подстраиваться под размер окна;
4. У каждого элемента должна быть превьюшка, но сделанная не вручную;
5. Все префабы должны быть разделены на каталоги, по типу "постройка", "окружение" и тд;
6. При помощи клавиатуры добавить возможность поворота;
7. При активации кнопки постройки и перемещении указателя на сцену должно появиться превью постройки;
8. Постройки не должны ставиться одну в другую.

Звучит сложно, но до этого на теории мы разобрали всю базу для этого, включая работу с файлами и всеми элементами GUILayour.

А зачем вообще упоролись в практику, ведь могли за 2 дня еще чо-нить разобрать? Странный вопрос (я сам его придумал) думаю итак все понимаете на*уя нужна практика. Но все-таки, я очень хотел, чтобы все участники:

А) Закрепили пройденный материал;
Б) Погрузились в реальный небольшой спринт и поняли, как это работает в реальности;
В) Научились работать в команде и распределять задачи.

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

А результат вы уже видели в прошлом посте, и если хотите увидеть разбор кода, то накидайте реакций, и будем долбить дальше 🔥
🔥37👍32🤡1
Привет, котаны)

Я сел заниматься разбором LevelBuilder и встал в небольшой тупик. Скрипт вышел под 300 строк, что для расширений так-то адекватно, но есть где сократить. В одном посте все не поместится, и мне кажется, что лучше сделать серию постов по самым горячим темам.

👇 Ниже скину опрос)
👍11🔥5👌2
Собственно, к чему я это всё? Мне нужна ваша помощь: какую тему вы хотите видеть в разборе больше всего?

Напишите в комментах свои пожелания, и уже завтра я выкачу первый пост, который выберете вы :3
Anonymous Poll
27%
Разбор механик расширения
22%
Рефакторинг кода для сокращения размера
30%
Интересные приемы из кода
18%
Разбор ошибок и возможных улучшений
2%
Версия в комментах
👍7🔥5👌1
РАЗБОР ВВОДА В РАСШИРЕНИЯХ

Спасибо за участие и комменты в опросе :3 Как и обещал, закидываю пост)

Во время практики ребятам нужно было сделать управление размером/поворотом объекта при помощи нажатия клавиш. Вроде все изи, но есть нюанс: ввод, который мы используем в плеймоде, отличается от ввода в редакторе.

Ситуация такая, класс Input для редактора недоступен, но есть класс Event с информацией о пользовательском вводе или рендеринге окна. Для каждого вызова OnGUI в скриптах создается новый Event, т.е. каждый метод отрисовки в редакторе может создать новый Event и значит их может быть несколько.

Остается вопрос: как мне определить нужное событие и вычленить из него нажатие клавиши?

Я смотрю на статическое свойство current, содержащее в себе Event. Он обрабатывается прямо сейчас в том скрипте, где я обращаюсь к этому свойству. И при помощи поля type я определяю, что за событие сейчас происходит, и провожу сравнение с желаемым событием из EventType.

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

Такие дела, накидывайте 🔥, если вам заходит такой формат)
🔥312👍21🍓1
С превью префаба можно работать!

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

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

В Unity есть фишка - AssetPreview. Очень удобный класс, с которым мы получим превьюшку объекта, если у нас есть ссылка на него.

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

Ну и, напоследок, хотелось бы поздравить всех с наступающим Новым годом) Желаю вам всем в новом году крутых райзов, интересных задач и бенчёвых проектов! 🎄
🎄22👍8🔥31