Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
 Что обсуждали люди в 2024 году? Самое время вспомнить — через виммельбух Пикабу «Спрятано в 2024»! Печенька облегчит поиск предметов.

Спрятано в 2024

Поиск предметов, Казуальные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Unity + Обучение

С этим тегом используют

Gamedev Разработка Инди Инди игра Игры YouTube Компьютерные игры Образование Учеба Урок Программирование IT Английский язык Все
75 постов сначала свежее
VolodyaVovka
VolodyaVovka
3 года назад

Смена курса, помогите определиться с обучением⁠⁠

Приветствую пикабу! Как я уже говорил, меня зовут Володя, не так давно мне исполнилось 30 годиков, и я решил круто изменить свою жизнь.
Изначально я хотел открыть инди студию, так как к 30 годам, накопилось множество идей и амбиций, по созданию собственных видеоигр, а так же несколько конеретных и, на мой взгляд, выйграшных стартапов(если можно тут так говорит про игры). Как же я ошибался, когда думал, что мне ВСЕГО ТО нужно собрать несколько человек, которые смогут воплатить мои идеи в видео игру, НО, к моему счастью, я быстро снял розовые очки, и понял, что таких как я, пишущих художникам и программистам, пруд пруди, и кто я такой, что бы мне уделять свое драгоценное время. Отсюда собственно и начинается мой вопрос, решил отучиться на разработчика на юнити, нашёл неплохие курсы у одной небезизвестной онлайн школы, 20к за 11 месяцев, обещают 3 проекта для портфолио, трудоустройство и бла бла бла, трудоустройство меня не интересует, но интересует другой момент, смогут ли меня чему нибудь путному там научить ? Или это будет впустую потраченное время и лучше найти что то посерьёзнее и на больший период времени ? Прошу сильно не ругать меня за грамматику, я тут новенький, всем откликнувшимся заранее спасибо! Всем мир!)

[моё] Длиннопост Обучение Gamedev Игры Unity Онлайн-курсы Текст
94
21
annaleeplay
annaleeplay
3 года назад
Лига Разработчиков Видеоигр

Ползу в направлении мечты. Пост № 7⁠⁠

Ползу в направлении мечты. Пост № 7 Обучение, Программирование, Gamedev, Мотивация, Unity

Всем доброго дня дорогие Пикабушники. Да, на прошлой неделе я ничего не писала, но это не потому, что я бросила вас/учебу по Юнити или что-то еще. А просто на прошлой неделе было очень много других дел, и сейчас, как-то прогресс уже не идет такими скачками как раньше. А благодаря стажировке он идет более глубоко, но не семимильными шагами.


Часть прошлой и эту неделю я разбиралась с UI. Но только не со стороны дизайна, а со стороны программирования. Мне объяснили, как работать с тайлами, плашками на которых будет указан какой-то текст, иконка и его статус. И что ты делаешь только одну штучку, а всё остальное будет копировать и меняться с помощью кода. Иногда над какой-то задачей могу просидеть целый день и получается ничем не позаниматься другим. В итоге за эти выходные нужно придумать себе новый распорядок и график обучений. Как мне подсказали, наверное, буду чередовать дела, попробую так, на одно дело 1.5 – 2 часа, дальше перехожу к новому, даже если не до конца успела доделать предыдущую и так по кругу.


Посоветовали почитать «Полное руководство по языку программирования С#» на metanit.com, сказали, что очень хорошее чтиво.


В общем иду, не останавливаясь к мечте, хоть и по чуть-чуть))


На Новогодних праздниках планирую играть, до 4 числа точно, просто буду разгружать свой мозг)))


А вас всех поздравляю с наступающим Новым Годом! Желаю всегда добиваться своих целей и следовать своей мечтой, ну и что бы железо для ПК стоило по рекомендованным ценам)))


С ПРАЗДНИКОМ!!!


P.S. Следующие посты буду писать один раз в конце месяца, подводить его итоги. Так хотя бы будет больше информации и смогу поделиться большими успехами.

Показать полностью
[моё] Обучение Программирование Gamedev Мотивация Unity
27
44
annaleeplay
annaleeplay
3 года назад
Лига Разработчиков Видеоигр

Ползу в направлении мечты. Пост №6⁠⁠

Ползу в направлении мечты. Пост №6 Gamedev, Программирование, Обучение, Мотивация, Unity, Мечта, Самообразование, Длиннопост

А вот и очередная пятница. Как прошла ваша неделя? Надеюсь, что все было хорошо.


У меня по крайне мере да, даже лучше, все было отлично! Моя мечта уже начала осуществляться (наверное, заметили, что названия поста немного сменилось), и я одной ногой попала в геймдев. Ну может одной ногой это громко сказано, скорее мизинцем одной ноги, но это не важно. Сейчас расскажу поподробнее.


Под прошлым постом оставили коммент типа: “Давай к нам в инди команду.” Ну я подумала, была не была и написала. В итоге пообщались и меня “взяли” стажером. Очень страшно, боюсь, что не справлюсь или что буду делать в начале всё очень медленно. Но потом думаю, что вооот оноо, вооот. Я уже почти тут, в геймдеве, просто побольше упорства и всё получится. Ребята (инди студия с названием Nord Unit) как раз работают с Unity и специализируются на мобильных играх. Сейчас у них в работе имеется проект под названием Great Stairs, на который меня как раз будут подключать. Очень сложно описать, в каком я восторге от всего этого.


В связи с этим, на этой неделе я немного под изучила фотошоп, как нарезать PNG из PSD. Что бы потом использовать эти спрайты в Unity для создания интерфейса. Ну и, собственно, само задание, собрать этот интерфейс. Вроде немного, но с фотошопом я просидела целый день, хотя работы там было на 5 минут. За то, если мне дать такое же задание, я его сделаю уже очень быстро). Теперь осталось собрать макет, который мне дали в Unity. А дальше будет еще интереснее.


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

Ползу в направлении мечты. Пост №6 Gamedev, Программирование, Обучение, Мотивация, Unity, Мечта, Самообразование, Длиннопост

К сожалению, на этой неделе, полноценных у меня было только три дня. Т.к. в понедельник я ходила на ревакцинацию и весь вторник я провалялась с температурой и головной болью. Ближе к ночи всё прошло, и больше ни каких побочек не было.


И еще, каким-то чудом, видимо благодаря появившейся мотивации, я наконец то смогла вставать уже в 9 утра. Да и к полуночи уже вырубает. В общем, хватило пары пробуждений в выходные в 8 утра, и добавочной мотивации, что бы режим начал восстанавливаться.

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


На следующей неделе надо уже дожать этого противника, сделать нанесение ударов и как раз следующее по очереди будет UI. Как раз будет в плюс к моему пайплайну по сборке UI.

В связи со всем этим, я поднимаю свой статус с лежания в направлении мечты, до ползанья в ее направлении. Главное не останавливаться и всё получится и у меня, и у вас))


Всем суперских выходных и прекрасной пятницы.

Показать полностью 1
[моё] Gamedev Программирование Обучение Мотивация Unity Мечта Самообразование Длиннопост
28
47
annaleeplay
annaleeplay
3 года назад
Лига Разработчиков Видеоигр

Легла в направлении мечты. Пост №5⁠⁠

Легла в направлении мечты. Пост №5 Программирование, Gamedev, Unity, Самообразование, Обучение

Всем хорошей пятницы, мои дорогие пикабушники.


Спешу поделиться тем, что я освоила за неделю. К моему сожалению, очень не много. Если кто читал предыдущие посты, то помнит, как в одном из них я писала, что у меня начались проблемы со сном. Видимо из-за большого количества информации, мой мозг перевозбуждался и не мог ночью уснуть. Дошло до того, что я не могла уснуть и в 2,3,4 ночи. В определенный момент решила, что хватит, с этим надо что-то делать. Сходила в аптеку и купила себе «Мелатонин». И вот чудо, в 22 часа я уже спокойно спала, но тут начался другой эффект (всё у меня ни как у людей) я стала хотеть спать и днем тоже, причем постоянно. В итоге видео, по курсу которое идет минут 10-15 я могла усваивать полтора-два часа. Всё шло медленно, но шло. Для себя я решила, что лучше я буду проходить в день всего два-три обучающих видосика, но это лучше, чем ничего.


По итогу за эту неделю я разобралась с главным персонажем, как его добавить, как в Юнити сделать анимацию (только основы), когда персонаж у тебя уже имеется нарисованный по частям, а тебе нужно просто там что-то подредактировать. Как я поняла, полноценное создание анимированного персонажа или врага — это отдельная тема, которую нужно будет отдельно изучать и скорее всего, это делается даже не в Юнити, а в специальной программе. Если подскажете в какой, буду благодарна. Но это так, для общего развития, сама я не думаю, что смогу что-то подобное сделать, какой-либо талант, связанный с рисованием и дизайном, обошел меня стороной, хотя даже не обходил, он вообще рядом не появлялся. Теперь мой герой бегает, дерется и умирает как все нормальные персонажи, а не просто ходячий, жёлтый овал.

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


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

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


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


Спасибо всем, кто в комментариях отвечает на мои вопросы и всем, кто меня поддерживает, да вообще всем, кто оставляет комментарии. Особенно приятно читать, что кто-то тоже с мотивировался и начал что-то делать для своей мечты, ребята, я в вас верю, не останавливайтесь!


И уже по традиции, желаю всем приятной пятницы, отличных выходных и легкой следующей недели.

Показать полностью
[моё] Программирование Gamedev Unity Самообразование Обучение
58
75
annaleeplay
annaleeplay
3 года назад
Лига Разработчиков Видеоигр

Легла в направлении мечты.  Пост № 4⁠⁠

Легла в направлении мечты.  Пост № 4 Gamedev, Программирование, Csharp, Unity, Самообразование, Обучение, Длиннопост

Всем привет. Как прошла ваша неделя? У меня замечательно, закончила я с основами шарпа, ну как закончила, решила, что все остальное буду уже учить в процессе. И вот, пару дней назад я перешла к Unity. И это очень сложно описать, какой у меня пока идет восторг, вроде бы пока у тебя ничего особенного нет, на экране – просто гуляющий овал, какие то картинки взятые бесплатно с сайта Unity, но как же это здорово, от этой маленькой тени настоящей игры, у тебя уже вырабатывается адреналин.


Если брать более конкретно, то за эти два дня Unity, (первые три дня я занималась ООП по C#) узнала, как создавать окружение, откуда брать ассеты и как с ними работать, поняла, как создавать движения персонажа, его прыжок, расставила платформы,  как сделать движение камеры за персонажем, с помощью cineMachine.


Начала читать книгу: “Unity и C# Геймдев от идеи до реализации” – Джереми Бонд. Пока успела прочитать 83 страницы. Начало книги посвящено геймдизайну, пока все описано в общих чертах, посмотрим, что будет дальше.


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


На следующей неделе в планах: анимация персонажа, боёвка, добавление различных уровней, музыка, звуки, враги и т.д.. Иногда появляется небольшой страх, что сколько всего нужно запомнить, но потом думаю, что создать пару своих проектов, и это должно уложиться в голове. Потому что пока в ней небольшой бардак, а пока из-за страха энтузиазм упал до 8/10. И как люди умудряются сделать игру за пару дней?


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


Онлайн курсы:

• Курс программирование на С# от новичка до специалиста - прохожу сейчас, совместно с курсом по Unity (Udemy).

• Курс по Unity. Создание 2D платформера – прохожу сейчас С#.(Udemy).

• Complete C# Unity Game Developer 2D – возьмусь после прохождения курса по Unity (Udemy).

• Ulearn.me – тоже прекрасный курс по С#.

• exercism.org – курсы по C# на английском.

• https://learn.unity.com/ - курсы по Unity от них самих, на английском, но сказали, что все понятно.

Сайты с задачами (здесь те, которые мне понравились больше всего):

• codingame.com – это сайт огонь, спасибо за подсказку.

• codewars.com

• c-sharp.pro – здесь задачки для начинающих


Книги:

• С# для чайников – хорошая замена онлайн курсов, для тех, кто любит книги.

• Unity и C# Геймдев от идеи до реализации, 2-е издание.

• Геймдизайн, как создать игру, в которую будут играть все.

• «Новый уровень!» Руководство по геймдизайну.

• Проектирование виртуальных миров. Теория и практика дизайна уровней.

• Кровь пот и пиксели – книгу уже прочитала, очень она понравилась, хорошо снимает розовые очки, что в игровой индустрии всё гладко и хорошо показывает, как много бывает кранча при создании игр.

• Чистый код. Создание анализ и рефакторинг. Роберт Мартин – для этой книги нужны уже хоть какие-то знания в C#.

• Грокаем алгоритмы – Адитья Бхаргава

• Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше – Тайнан Сильвестр


Конференции:

• devgamm.com/ru/ - у них имеется ютуб канал, где выкладывают прошедшие конференции.


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

Показать полностью
[моё] Gamedev Программирование Csharp Unity Самообразование Обучение Длиннопост
21
50
SweetCicada
SweetCicada
3 года назад
Лига Разработчиков Видеоигр

Не хочу больше учиться у дураков!⁠⁠

Бывало ли у вас такое, что вы учились чему-либо у человека, который сам очень плохо разбирается в вопросе? В наш век высоких технологий доступ на тот же ютуб есть у всех, но не все приходят туда лишь зрителями. Кто-то идет учится. И вот тут встает резонный вопрос - у кого? Бесплатных курсов полно, но в каком вас не научат откровенной туфте? Купи платный по куче отзывов - скажете вы. А что, если отзывы накрученные? А что, если выкинешь деньги (причем не маленькие) на ветер? А что, а что, а что...

Не хочу больше учиться у дураков! Gamedev, Разработка, Обучение, Unity, Инди, Инди игра, Видеоигра, Истории из жизни, Компьютерная помощь, Длиннопост

Кто читал мой вчерашний пост, наверное, понял, о чем я.


Три недели назад я начала изучать язык C# чтобы в последствии перейти на Unity. Порыскав в интернете и не совсем разбираясь в том, что хорошо, а что плохо, я выбрала первый же выскочивший в рекомендациях курс. Уже после пары серий я почувствовала, что что-то не то. То ли я туплю, то ли лектор какой-то не такой.


Да-да, скажете вы, очередная "специалистка" нашлась. Но моя чуйка, увы, не просто так била тревогу. Специалисты даже без называния имя-фамилии лектора сообщили мне, что я не у тех учусь. Живущий под боком программист так же подтвердил - уууу, дичь. К тому же в интернете нашлась гора "разоблачений" на данного "специалиста". Но самое плохое здесь то, что курс я в целом прошла, и большую его часть освоила (пользуясь гуглом и чужой помощью). Если бы, собственно, не гугл и не помощь, не советы знающих людей, я бы бросила. И обучение бросила, и маленькую консольную игру, которую писала для лучшего закрепления выученного.


Итак, к чему я все это пишу.

Развиваться дома, самостоятельно, я не могу. Забросить так же не в моих интересах. Учиться дальше - хочется. Учиться у дураков - уже не хочется. Потому прошу помощи у тебя, читатель:


1. Если у тебя есть ссылка на хороший курс по Юнити - очень прошу ей поделиться.

(про официальные ресурсы от самого Юнити и документацию знаю, можно не дублировать)


2. Если у тебя есть ссылка на хороший курс по C# - так же буду благодарна

(КЭП, я знаю что такое документация и буду ее в любом случае читать и учить на практике, но новичку с 3 неделями стажа ее скушать, проглотить и переварить тяжеловато)


3. Если так же вы видели какие-либо с материалами на тему "что хорошо, а что плохо" по программированию - буду безмерно благодарна.


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


Всем хорошего дня!

Не хочу больше учиться у дураков! Gamedev, Разработка, Обучение, Unity, Инди, Инди игра, Видеоигра, Истории из жизни, Компьютерная помощь, Длиннопост

P.S. Честно, я немного в шоке!Вот обычно как бывает - зарегистрировался на каком-нибудь сайте, выложил туда что-либо, и... тишина. Звенящая тишина при огромном количестве народа djrheu. Никто тебя не замечает, никому до тебя дела нет. А тут - почти 40 лайков за день!. Еще и километровое обсуждение на тему! Вах! Спасибо, ребята!


P.S. На скрине выше - кот-ученый из будущей игры. Наглый плагиат на Бегемота, конечно. Питается дураками. Эх... не хочу, чтобы меня слопал собственный персонаж :)

Показать полностью 2
[моё] Gamedev Разработка Обучение Unity Инди Инди игра Видеоигра Истории из жизни Компьютерная помощь Длиннопост
43
86
AlexanderDllSky
3 года назад
Лига Разработчиков Видеоигр

Как делать игры в Unity. Попытка в серию обучающих постов #3⁠⁠

Пост №3. Несколько способов связи разных компонентов

Дисклеймер:

Во-первых, эти посты я пишу для тех, кто хоть немного знаком с C#. Во-вторых, это далеко не все способы связи частей программы/игры. В-третьих, не стоит забывать, что приведенные ниже код написан в просветительских целях, ориентирован на низкий порог вхождения, поэтому "делать еще более правильнее и профессиональнее, используя больше абстракций, а не конкретные классы" я не стану. И еще - можно бесконечно долго спорить о паттернах и анти-паттернах =)

Всем привет!
Сегодня расскажу и покажу три способа связи разных компонентов.

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

Сферическая задача в вакууме будет такой:

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

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


Проект урока можно посмотреть в гите .

1. Паттерн Singleton

Данный паттерн (хотя в ряде случаев из-за недостатоков считается анти-паттерном) в "полной реализации" гарантирует наличие единственного экземпляра класса и предоставляет единую точку доступа к этому экземпляру.

В обучающем примере будет упрощенная реализация с наследованием от MonoBehaviour. Это нужно для того, что бы в примере просто разместить этот компонент в каком-нибудь объекте (для наглядности лучше в отдельный GameObject на "видном месте") на сцене и после запуска игры иметь простой доступ к этому компоненту. Директива #region использована исключительно для наглядности разделения блоков, т.к. в следующем пункте будем  дорабатывать этот класс.

Из-за такой условности, что упрощенная реализацию плюс  наследование от MonoBehaviour, у моего примера есть существенный недостаток - инициализация происходит в методе Awake. Следовательно, если на сцене изначально (при запуске игры) будут находиться объекты, которым потребуется доступ к этому классу, то делать это придется после Awake() - т.е. не раньше чем в Enable() или Start().

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

2. Паттерн ServiceLocator

Этот паттерн позволяет в едином месте хранить ссылки на "сервисы". И как правило - каждый "сервис" - это отдельный класс. В реалиях игры этими "сервисами" могут быть контроллер интерфейса (который, допустим, создает все окна и элементы UI), контроллер игрового режима (который, н-р, знает все правила текущей игры), какой-нибудь контроллер ботов (содержащий список всех ботов на сцене) и т.д.

На основе предыдущего пункта создадим такой Локатор. В моем примере он (локатор) наследуется от MonoBehaviour для наглядного размещения на сцене. Однако это вовсе не обязательно. Класс-локатор может быть статичным, а может быть и Singleton (но без наследования MonoBehaviour и без размещения на сцене его пришлось бы создавать в каком-нибудь месте игры, н-р, при инициализации).

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

"Локатор" готов. Но сам по себе он бесполезен. Теперь создадим основную сущность этого урока - Счетчик. Он должен будет регистрироваться в существующем локаторе и давать возможность корректно изменять свое состояние (помните про совет с минимумом общедоступных членов класса?) и выдавать по запросу свое актуальное состояние (значение счетчика).

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

Но как же Счетчик будет сообщать об изменении своего состояния? Чтобы другие объекты в игре могли отслеживать изменения Счетчика без необходимости его регулярной проверки, будем использовать...

3. События

События сообщают объектам-подписчикам о каком-то изменении. В данном примере Счетчик должен будет сообщать, что изменилось его значение. И что бы избежать лишней последовательности "Сработало событие -> Запрашиваем актуальное состояние -> Выводим результат" при вызове события сразу будет передаваться актуальное состояние счетчика.

События объявляются ключевым словом event с указанием типа делегата, которым будет представлено событие. Для примера подойдет "встроенный" в C# делегат Action<int> - он принимает параметр типа int - с его помощью будем передавать значение счетчика.

В написанный выше класс Счетчика внесем несколько изменений.

Подключим пространство имен и объявим событие

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост
Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

И в методе изменения счетчика добавим вызов события

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

Теперь быстренько создадим класс для работы кнопки и класс для текстового поля для "отлова" события изменения счетчика.

Кнопка должна будет через Локатор получить Счетчик и вызвать метод изменения счетчика.

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

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

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

Как делать игры в Unity. Попытка в серию обучающих постов #3 Unity, Csharp, Gamedev, Обучение, Длиннопост

Из текста я опущу то, что эти компоненты нужно разместить на сцене, в случае кнопки - еще необходимо задать обработчик нажатия в компоненте Button в инспекторе, а в случае компонента для текста - через инспектор задать значение текстового поля.


В результате получается следующее:

Запускается игра, сингтон-локатор инициализируется. Затем Счетчик регистрируется в локаторе. Следом (по порядку вызова Unity-методов MonoBehaviour) текстовое поле подписывается на событие изменения счетчика и первый раз выводит текущее состояние этого счетчика. А при нажатие на кнопку происходит увеличение счетчика. В результате чего вызывается событие изменения, на которое реагирует текстовый компонент.


На этом пост подходит к концу.

Еще раз напомню, что код и сцену можно посмотреть в репозитории.

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

Успехов в геймдеве!

Показать полностью 9
[моё] Unity Csharp Gamedev Обучение Длиннопост
48
Партнёрский материал Реклама
specials
specials

Только каждый третий пикабушник доходит до конца⁠⁠

А сможете ли вы уложить теплый пол, как супермонтажник?

Проверить

Ремонт Теплый пол Текст
59
AlexanderDllSky
3 года назад
Лига Разработчиков Видеоигр

Как делать игры в Unity. Попытка в серию обучающих постов #2⁠⁠

Пост №2. Азы программирования. Некоторые правила написания кода.


Всем привет! Продолжу серию обучающих постов.

Этот пост будет посвящен плохим и хорошим привычкам написания кода (в ключе "новичок"). Существует много книг и практик по написанию "понятного/чистого" кода, который легко поддерживать (н-р, советую "классику" - "Чистый код" Р.Мартин), знать и использовать их все не обязательно, особенно новичкам.

Но я считаю, что даже на начальных порах следует придерживаться некоторых правил написания кода, что бы приучать себя "качественно делать свою работу". К тому же при работе в команде необходимо писать в более-менее едином стиле, поэтому приучая себя придерживаться хотя бы минимума правил в начале своего пути в дальнейшем будет проще адаптироваться к правилам кодстайла команды/компании.


Дисклеймер:

Некоторые вещи могут показаться слишком очевидными, но их следует упомянуть в любом случае. А так же следует помнить, что написанное ниже имеет отношение к C# и Unity, а в разных языках программирования могут быть разные принятые стандарты (например, в C# методы должны называться с заглавной буквы, а в Java - с маленькой)

1. Имена классов

Называйте классы с заглавной буквы и используйте CamalCase. Никто не запрещает называть классы с маленькой буквы и/или использовать в названии "подчеркивание" _ , однако это является дурным тоном.

Имена должны быть осмысленными и отражать роль/функционал класса.
Используйте английский язык и ни в коем случае не используйте транслитерацию в именах.

Как делать игры в Unity. Попытка в серию  обучающих постов #2 Unity, Csharp, Gamedev, Обучение, Длиннопост

2. Имена свойств и полей классов и переменных в методах

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

Как делать игры в Unity. Попытка в серию  обучающих постов #2 Unity, Csharp, Gamedev, Обучение, Длиннопост

Имена свойств/полей/переменных также должны выдаваться осмысленно. Переменные всегда называются с маленькой буквы. С полями и свойствами не так все однозначно - в разных командах могут быть разные стандарты. Но как правило это: свойства называются с заглавной буквы, а поля с маленькой, причем имена приватных полей могут начинаться с подчеркивания _.

3. Имена методов

Естественно, называть методы "от балды" нельзя. Как и в предыдущих пунктах, имя/название метода должно отражать его роль/функцию/работу. Но хочется особо отметить методы с ключевыми словами Set/Get/Check.

3.1 Set-методы
Методы, которые начинаются с Set просто обязаны иметь параметры/аргументы и производить присвоение данных. Ничего лишнего быть не должно. В примере ниже второй метод помимо заголовка задает название звукового файла (н-р, который проигрывается при открытии окна, не важно) - так делать не следует!

Как делать игры в Unity. Попытка в серию  обучающих постов #2 Unity, Csharp, Gamedev, Обучение, Длиннопост

3.2 Get-методы

Методы с "Get" в названии должны что-то возвращать. Нельзя в таких методах производить какие-либо присваивания и вычисления, которые что-нибудь меняют в классе. Нельзя менять состояние объектов через "гет-методы".

Как делать игры в Unity. Попытка в серию  обучающих постов #2 Unity, Csharp, Gamedev, Обучение, Длиннопост

3.3 Check-методы

Как предполагает название, такие методы должны что-то проверять, возвращая результат проверки (как правило bool). И в таких методах так же не стоит менять состояния объектов.

Как делать игры в Unity. Попытка в серию  обучающих постов #2 Unity, Csharp, Gamedev, Обучение, Длиннопост

4. Модификаторы доступа

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

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

По умолчанию используется модификатор private. Однако это не означает, что не стоит его указывать явно. Хорошей практикой программирования является явное указание модификатора доступа, даже если это private.

Если в вашем классе-компоненте необходимо в Unity через инспектор задавать какие-то ссылки (указывать другие объекты, части интерфейса и пр.) - то используйте закрытые (private) поля, но с аттрибутом [SerializeField]. Это сохранит целостность инкапсуляции (другие классы не смогут получить доступ к полю и "испортить" его), однако в инспекторе Unity Вы сможете видеть эти поля и задавать им значения.

Как делать игры в Unity. Попытка в серию  обучающих постов #2 Unity, Csharp, Gamedev, Обучение, Длиннопост

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

Пост подходит к концу, а всем вам желаю успеха в геймдеве!

Показать полностью 6
[моё] Unity Csharp Gamedev Обучение Длиннопост
30
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии