Джун Джуно к вашим услугам! Путь в разработку игр | Движуха Сакутина
رفتن به کانال در Telegram
354
مشترکین
-124 ساعت
-17 روز
-530 روز
آرشیو پست ها
🔥 НАКАЗАНИЕ ДЛЯ ДЖУНА ДЖУНО 🔥
🙂 Джун Джуно к вашим услугам! Сегодняшний огромный и очень - очень классный пост по Unity, к сожалению, задерживается..
‼️ Но поверьте ожидания стоят того! Вам понравится!
⚡️ Чтобы скоротать ваше время, пока я доделываю пост, хочу показать вам, что бывает с учителями, кто не могут в течение 15 минут подойти к ученице, чтобы настроить уровень в GDevelop!
🔥 - если хотите поучаствовать в казни Джуна Джуно
Spine2D Knight Character Animation Pack (1).zip71.17 MB
+3
🔥 СОЗДАНИЕ АНИМАЦИИ В UNITY 🔥
🙂 Мы с вами окунулись в изучение C#. Но скучно читать про одно и то же..
❗️ Настало время разгрузить свой мозг и научиться обращаться с Unity
⚡️Специально для моих дорогих подписчиков, я приложил файл с раскадровкой различных анимаций для тренировки, ведь сегодняшняя тема - создание покадровой 2D анимации
💥 НАЧНЕМ С АНИМАЦИИ СМЕРТИ:
✔️ Нажимаем комбинацию клавиш ctrl + 6, чтобы открыть редактор анимаций
✔️ В окне иерархии создаем пустой объект и нажимаем на него левой кнопкой мыши
✔️ В редакторе анимаций появится кнопка CREATE. Далее мы выбираем папку куда хотим сохранить эту анимацию и его контроллер. Они создадутся автоматически
✔️ В папке Frame by frame / dead расположены разбитые по кадрам анимация смерти. Каждый кадр отдельный спрайт.
✔️ Выделяем все изображения, зажимаем и перемещаем их в окно с полосами и цифрами редактора анимаций
‼️ АНИМАЦИЯ ГОТОВА!!!
✔️ Можете нажать кнопку Play и посмотреть работу анимации
📈В ближайшее время мы будем заниматься планомерным изучением анимаций в Unity
‼️ Будет познавательно и очень увлекательно!
⚠️ Домашним заданием будет создать анимации ходьбы, прыжка и атаки
⭐️ А если у вас возникнут трудности, помните - Джун Джуно к вашим услугам!
🔥 СОЧНАЯ ТЕСТОВАЯ АНИМАЦИЯ С ДЖУНОМ ДЖУНО 🔥
⚡️ Моя художница скинула первую тестовую анимацию со мной!
📈 Ещё работать и работать над заставкой, но я доволен результатом! Уверен, видео на Ютуб канале от Джуна Джуно с этой анимацией будут ещё ярче
‼️ Поддержите реакцией и комментарием нас! Вы не представляете насколько художнице приятно будет увидеть вашу активность)
🔥МОДИФИКАТОРЫ ДОСТУПА - ПЕРВАЯ ЛИНИЯ ОБОРОНЫ ИНКАПСУЛЯЦИИ🔥
🙂 Джун Джуно к вашим услугам! В этот теплый и прекрасный вечер предлагаю разобраться в принципе выбора модификаторов доступа, но сначала рассмотрим пример, с использованием наследования:
👀 У нас есть базовый класс Warrior, в котором есть поля _health и Armor. Также есть метод TakeDamage, через который воин будет получать урон
‼️Теперь рассмотрим его наследников. Класс BowMen, который при использовании способности может увеличивать показатель брони. Класс Knight у которого можно сломать броню и его значение будет равно 0
⚠️ ЗАДАЧА: нужно, чтобы наследники могли менять показатель брони. Модификатор private не подходит, потому что дочерние классы не могут к нему обращаться. Модификатор public тоже не подходит, кто угодно сможет изменить показатель брони. Тут нам поможет модификатор PROTECTED.
✔️С первого взгляда модификатор protected идеальное решение, которое сохраняет инкапсуляцию объекта.
⚠️ЭТО ЛОВУШКА!!!
⚡️Модификатор protected также опасен, как и public. Поэтому поля с этим модификатором именуются с большой буковой, как и public поля. Стоит максимально аккуратно его использовать
💥В дальнейшем мы рассмотрим техники, которые помогут сохранять инкапсуляцию объектов при использовании наследования
⁉️ КОГДА СТОИТ ИСПОЛЬЗОВАТЬ PROTECTED?
✔️ Когда базовый класс хочет сообщить наследникам какую-то информацию для их корректной работы. Но при этом не давать лишней информации тем, кто ссылается на базовый класс. Это актуально для свойств и методов
❌ КОГДА НЕ СТОИТ ИСПОЛЬЗОВАТЬ PROTECTED?
Когда наследникам хочется изменить данные в полях базового класса на прямую. Для таких случаев пишутся protected методы, через которые можно менять поля, проверяя все предусловием. Тогда инкапсуляция не будет нарушена.
📈Подведем итоги. Джун Джуно рассказал как сохранять инкапсуляцию классов, связанных наследованием
⚠️А если у вас остались вопросы, задавайте их в комментариях. Ведь Джун Джуно к вашим услугам!
🔥 ВЫБРАСЫВАНИЕ ИСКЛЮЧЕНИЙ - ЛУЧШАЯ КОНТРАЦЕПЦИЯ ОТ МИРА IT🔥
🙂 Джун Джуно к вашим услугам! Предлагаю завершить этот замечательный вечер отличной фишкой в программировании, но прежде пример:
❗️У нас есть класс Bookshelf. Сделаем у него метод добавления книжки на полку, метод вытаскивания книжки по индексу, метод получения цены всех книг.
✔️ Класс Book содержит в себе поле цены и свойство, хранящее его
⚠️ Обязательно нужно добавить список, содержащий классы Book, под названием _books
✔️ На первый взгляд все нормально. Функционал работает, ошибок пока что нет. Ключевое слово - пока что!
⚠️ Обратим внимание на метод Put. Что если в аргумент этого метода кто-то передаст Null? Метод этого даже не заметит и спокойно запишет его в список книг. О том что у нас лежит фантомная книга на полке, мы узнаем в абсолютно непредсказуемый момент
❓ Как решить данную проблему? На помощь придёт предусловие метода. Если оно не выполнится - выброситься исключение. И соответственно мы сразу узнаем в какой момент что-то пошло не так
⁉️Но как объявить предусловие и выбрасывать исключения?
💥 В начале метода пишем блок if с проверкой нужного нам условия. Если проверка не пройдена, то мы выбрасываем исключение. Сначала пишем throw new и после имя нужного нам исключения
‼️Самые популярные варианты исключений и случаи их применения:
✔️ ArgumentOutOfRangeException - метод принимает числовое значение, которое может выходить из определенного диапазона
✔️ ArgumentNullException - метод получил в параметре Null
✔️ InvalidOperationException - мы не знаем какая ошибка подходит под предусловие метода
📈 Подводя итог, код стал безопаснее, а Джун Джуно поделился с вами нереально крутой информацией по C#
⚡️ Поддержите меня реакцией и комментариям, мне очень приятно
🔥 ПЕРВЫЙ МЕМ ОТ ПОДПИСЧИКА 🔥
👀 Сегодня днём мне скинул мем мой подписчик, наконец-то спустя столько времени мне посвятили прикол
⚠️ Жду от хейтеров клоунов и блеющих смайликов
#мем
🔥 ПОДАРОК ДЛЯ ГЛАВНОГО АНИМЕШНИКА КЛАССА 🔥
🙂 Один мой ученик очень сильно фанатеет по аниме. Его любимое - Атака на титанов
‼️ Он долго упрашивал меня и вот под конец учебного года я подарил ему стикерпак с персонажами этой вселенной
💥 Теперь ходит весь радостный, дома приклеет на системник одну из наклеек
⚠️ Признайтесь, хотели бы себе такого же учителя, как Джун Джуно?
🔥 Наследование - спасательный круг от дублежа кода 🔥
🙂 Завершаем неделю постом про очень важную возможность в программировании, без которой невозможно разрабатывать и поддерживать хоть сколько-нибудь большой проект
⚡️ Представим, есть три класса, отвечающих за движение различных сущностей: CarMovement, BirdMovement и ShipMovement. Они все содержат общий метод Go, реализующий абсолютно одинаковую логику для всех трёх классах
❓ Заметили проблему? Что если эти методы потом будут вызываться не в Update, а в FixedUpdate и придется домножать скорость не на Time.deltaTime, а на Time.fixedDeltaTime
⚠️Нужно будет заходить во все классы и применять там изменения! А таких классов может быть не три, а тридцать!
⁉️ Как нам избежать дублежа кода и ускорить разработку проекта? На помощь придёт наследование! Но сначала познакомимся с важными положениями:
✔️ Дочерний класс - класс, который наследуется от какого-то класса
✔️ Родительский класс - класс, от которого наследуется другой класс
✔️ Для наследования после названия класса ставится двоеточие и пишется родительский класс
✔️Все компоненты в Unity наследуются от MonoBehaviour. Поэтому Rigidbody - дочерний класс, MonoBehaviour - родительский
💥 Перенесём метод Go в класс MovementObject, который будет родительским. От него будут наследоваться классы CarMovement, BirdMovement, ShipMovement, то есть это дочерние классы
❗️И теперь обращаясь к каждому дочернему классу от MovementObject, мы сможем получить метод Go
📈 Как итог, кода стало меньше и с ним стало проще работать
⚠️ Обратите внимание, в классе MovementObject мы использовали публичное поле Speed. А это нарушение инкапусулиции!
‼️ Как же нам решить эту дилемму: разрешить доступ дочерним классам и запретить посторонним? Если вам интересно узнать ответ на этот вопрос - Джун Джуно к вашим услугам!
🔥 НАЧАТА РАБОТА НАД ЗАСТАВКОЙ С ДЖУНОМ ДЖУНО 🔥
🙂 Джун Джуно к вашим услугам! Хочу поделиться с вами замечательной новостью: для нашего Ютуб канала будет создана крутешйая заставка
👀 Также именно эта художница займётся стикерпаком со мной
‼️ Ждите большое количество контента!
🔥 Свойство - горячая сестра поля 🔥
🙂 Джун Джуно к вашим услугам! Я подготовил приятный бонус вам на вечер: очень классную фишку C#, про которую забывают большинство программистов!
⚡️ Представим, класс Person . В нём есть приватные поля _age и _name, недоступные для чтения из вне. У каждого поля есть свой соответствующий метод GetName и GetAge, позволяющий читать значение другим классам
⚠️ Заметили проблему? Метод, отвечающий за вывод значения поля, повторяет его имя! Это дубляж кода. Только представьте, если будет не две характеристики у класса Person, а десять! Вдруг в программу добавят поля отвечающие и за пол, и за национальность, и за религию человека. Список можно продолжать и дальше..
❗️И вдобавок появится огромное число методов для вывода этой информации, которые ты устанешь создавать..
❓Но как писать меньше кода? Исправляется это с помощью свойств!
💥Свойство - это член класса, состоящий из двух акссесоров: get и set. Напоминает поле, но с большим функционалом
✔️ Get - метод, возвращающий значение свойства
✔️ Set - метод, устанавливающий значение свойства
📈 Перед Get и Set можно писать модификаторы доступа. Так private в примере стоит перед set, запрещая другим классам изменять значение свойства. При этом он открыт для изменений внутри объекта. Вспомним, такая защита называется инкапсуляцией
⚠️ Но если не написан никакой модификатор доступа, то акксесор является публичным. Получается значение свойства можно получать извне, так как перед get ничего не стоит!
📈 Кода стало меньше - Джуно стал довольнее! Очень надеюсь, что пост оказался полезным. Не забывайте ставить реакции, вам нажать на кнопку, а мне невероятно приятно!
🔥 НАЧНИ УТРО С МИЛЕЙШИХ КАПИБАР🔥
🙂 У меня есть замечательная традиция: покупать стикеры к каждому уроку. Я дарю их детям за хорошие успехи для повышения мотивации
📈 Ребятам очень нравятся такие подарочки от меня! И их продуктивность на уроках действительно выросла
⚡️И одна ученица захотела отплатить мне тем же самым, подарив мне вот такие классные стикеры с капибарами
⚠️ Хотелось бы поделиться со всеми вами, но жаль что их так мало. А если хотите увидеть стикеры со мной - Джун Джуно к вашим услугам!
🔥 ИНКАПСУЛЯЦИЯ В UNITY 🔥
⚡️ Джун Джуно к вашим услугам! Предлагаю закончить этот замечательный день знакомством с очень важным понятием в программировании, но для начала пример
Представим, у пользователя есть счёт в банке. В любой момент по клику на кнопку он может снять определенную сумму денег, которая зависит от значения поля moneyToTake класса User. А позже эта сумма будет высчитываться из поля money класса Bank
‼️ Чтобы пользователь не ушёл в отрицательный баланс происходит проверка на положительность разницы числовых полей money и moneyToTake
👀 Но вот другой программист решает добавить подписку на Нетфликс в игру. Создаёт новый класс Subscription, обращается к классу Bank и видит лишь публичное поле money, которое он изменяет без проверки
⚠️ Спустя время появляется неприятный баг: баланс во-первых ушёл в минус, а во-вторых деньги продолжают списываться, несмотря на их отсутствие. Это очень портит впечатление игрока, кто не захочет дальше играть
❗️А мест, где будут списываться деньги может быть намного больше.. Как же недопустить такой ситуации?
⚡️ Поможет нам инкапсуляция. Нам нужно защитить наше поле money от некорректного использования: от отрицательного баланса.
✔️ Во-первых заменим модификатор доступа поля money с public на private, Во-вторых теперь будем изменять его через метод TryTakeMoney, возвращаюсь true или false в зависимости от того, хватает ли нам денег на покупку или нет.
📈 Теперь наш код стал безопаснее, а следовательно и лучше: класс Subscription может без проблем списывать деньги со счёта пользователя, выдавая сообщение в случае невозможности продления подписки.
🙂 И также вы теперь можете без проблем поставить реакцию, поддержав тем самым вашего Джуна Джуно!
🔥 БОРЬБА ПРОДОЛЖАЕТСЯ! 🔥
⚡️ Те, кто пришли от Романа Сакутина в мой телеграмм канал, уже знают: я не попал в его топ 10
✔️Когда мне было шестнадцать лет, случился мой первый облом с ним, с моей поездкой в Санкт-Петербург. В феврале 2024 года он организовывал мероприятие в некогда нашей столице для всех учеников своего курса. Я, как истинный фанат Сакутина, кто с 2020 года активно следил за его ростом, начал уже готовиться к поездке, как вдруг..
‼️ Роман Сакутин ставит ограничение по возрасту: лишь совершеннолетние могут попасть туда
📌 Но как и тогда, так и сейчас это не повод для грусти! Канал будет расти и дальше, ждите много интересного контента!
📈 Мы с вами добьёмся вершин и без внешней помощи! Я объявляю: в мае появится Ютуб канал
⭐️ Я буду сражаться до последнего! Буду вместе с вами, пока моё сердце горит ярким пламенем!
💥 Всех люблю и обнимаю! Спасибо, что ставите реакции и читаете посты! Ваша поддержка очень мотивирует меня выпускать новый контент!
⚠️ И помните.. Если нужен профессиональный код - Джун Джуно к вашим услугам!
Какой стиль выбрать? 🙃
🔥 НОВЫЙ СТИКЕРПАК С ДЖУНО 🔥
⚡️ Джун Джуно к вашим услугам! Нас уже больше трёхсот человек! Для меня это большая радость и в честь этой красивой отметки предлагаю интерактив
👀 В последний раз я заказывал стикеры со мной почти год назад. Они устарели, надоели всем, а в первую очередь мне.. Поэтому я с удовольствием начал поиски артиста
🔔 Найденный классный художник согласился работать на меня и предложил мне выбрать один из шести стилей для стикерпака со мной
❗️ Каждый из вас сможет повлиять на итоговый результат! Именно твоё мнение невероятно важно!
💥 Отправляйте примеры стикеров или мемов, которые нужно обязательно сделать с Джуном Джуно!
⚠️ В комментариях пишите нравится ли вам вообще варианты или стоит искать другого художника
🔥ИСТИННЫЙ ФАНАТ ГЕЙМДЕВА ДЖУНО🔥
🙂 Мой ученик записал у себя на руке название игры, чтобы скачать её дома)
⚠️ Преданность 100%
🔥 БАШНЯ АДА: OBBY - ПЕРВАЯ ИГРА НА ЯНДЕКС ИГРАХ 🔥
⚡️ Делюсь с вами геймплеем моей первой игры, над которой я работал в игровой студии NipoGames
👀 Сможешь ли ты пройти супер сложный паркур?
➡️ Пробуй свои силы в классной игре
⚠️ Если вам интересно узнать историю разработки игры - Джун Джуно к вашим услугам!
🔥 ИСПОЛЬЗУЙ СЛОВАРЬ В UNITY 🔥
❗️ Новички часто избегают использования словаря. Причина, к сожалению, очень понятна: они не до конца понимают принцип его работы
⚠️ Рассмотрим ситуацию: Пользователь вписывает в поле типа string название ресурса и в консоле должна вывестись либо цена, либо предупреждение об отсутствии такого ресурса
🙂 Поле будет называться _nameOfResource, метод для вывода в консоль - PrintPrice
✔️ Большинство программистов создали бы switch, в каждом case которого выводили цену
⚠️Две проблемы такого решения: магические числа и плохая читаемость
‼️ Строки ресурсов, должны находиться в константах, а числовые значения - в полях. Но даже такое решение будет очень большим и неудобным
❓ Как исправить эту проблему? Придет на помощь словарь!
⚡️ Dictionary - это таблица с двумя столбцами: ключом и значением. Особенности словаря:
✔️ Одна строка этой таблицы - это один элемент, включающий ключ со значением
✔️Ключ пишется первым элементом в таблице, значение - вторым
✔️Нельзя вставить в один словарь два одинаковых ключа - высветится ошибка
✔️Можно вставлять одинаковые значения с разными ключами
📈 Словарь в нашем примере значительно облегчит код. Назовём его _resourcesPrices
📌 Чтобы получить значение (int) из словаря, необходимо передать ключ (string)
⚠️ Но если такого ключа нету, вы получите ошибку! Поэтому метод ContainsKey является спасением, который выведет true при наличии ключа, false - при отсутствии
ℹ️ Теперь код стал намного лучше, так как всё стало очень наглядно и легко добавлять новые ресурсы в игру
❗️Хотите больше инфы про разработку игр, но не знаете кто даст крутые советы - Джун Джуно к вашим услугам!
🔥 NOOB SHOOTER ВЫШЕЛ В GOOGLE PLAY MARKET 🔥
⚡️ Наша студия наконец-то опубликовала игру! Вторая игра, над которой я работал в NipoGames, вышла в стадию альфа-версии
ℹ️ И теперь каждый из вас может поиграть в неё! Находите баги, а следовательно работу для вашего Джуна Джуно
⚠️ Буду очень рад, если вы скачаете её и напишите в комментариях ваше мнение!
‼️ Работа над проектом продолжится и дальше! Игра сырая, много нового ещё будет добавлено! Ждите новостей
https://play.google.com/store/apps/details?id=com.noob.shooter
