Ахахахах, вконце посмеялся от души. Ооо, можно синглтон не прописывать, персонаж синглтон, все синглтон😂 Отличная подача, видно что человек понимает и разбирается в том, о чем говорит! Уже давно подписан
Спасибо, уже понятнее. Удобно когда доступ в любой точке проекта, жаль что нежелательная схема. Как бы это сделать чтобы не нужно было по полям всё тягать и без сложных доступов через десять ветвлений, неужели нет возможности более удобно работать. Еще немножко не по теме, вопрос, как сделать формат фигурных скобок чтобы они сразу размещались в таком стиле, когда открытая стоит сразу в строке, а не внизу?
я тот самый начинающий который узнал про синглтоны и хочет все через них делать) поэтому немного не хватило пояснения концовки - я понимаю почему много синглтонов это не очень хорошо, но для чего тогда этот паттерн, когда стоит использовать именно его? условно если в моей игре заведомо 1 игрок нормально ли его сделать синглтоном?
Синглтон неплохо подходит под задачу интеграции наружних сервисов: синглтон рекламы, платёжки, стим, аналитика и др. Всё остальное - на свое усмотрение, но игрок например - это, если вдаваться в абстракцию, персонаж с управлением. Поэтому обычно, его не делают синглтоном, т.к. все может поменяться. Но если тебе не страшно переделывать огромный кусок, если что, или ты вовсе не собираешься этого делать - то пользуйся, пожалуйста)
Годный контент, меньше воды, больше дела. Конечно не хватает наглядности работы скриптов для полного понимания. Я как новичок, так вообще тук-тук, и сложно воспринимать: Что? Зачем? Почему? Надеюсь со временем придет). Но все равно респект 👍 и буду следить 🔔🙂
Наглядность работы скриптов я делаю через логи) не помню, есть в этом видео или нет, но в основном через логи. Этого достаточно, чтобы понять, что все работает и минимум времени, чтобы показать ту самую наглядность)
Спасибо за урок. Подскажите почему класс c названием "GameManager" - это не очень хорошо? Unity скрипт с именем "GameManager" отображает специальной иконкой - шестеренкой. То есть разработчики Unity, по всей видимости считают, что такой класс должен быть в проекте.
Т.к. в юнити низкий порог входа, то многие начинающие создают GameManager. Видимо юнити сделали эту шестеренку для них (честно говоря, ума не приложу, для чего). GameManager непонятно что делает, поэтому это плохо. Что он менеджерит? Игру? В каком смысле? Загрузка сцен? Тогда почему не SceneManager? Уровень? То есть LevelManager? Вообще менеджер непонятно что делает. Что значит менеджерить? Вот поэтому классы со словом Managet не приветствуются. Потому что непонятно что они делать должны
Потому что Manager может делать всё, что угодно. А код нужно разбивать на понятные сущности. Большая сущность должна разбиваться на маленькие, но manager говорит о том, что в нём может быть всё, что касается того или иного, например игры - GameManager, это неправильно. Например, кто-то рассказывал, что в какой-то популярной игре был скрипт PlayerController, который изначально подразумевает, что он будет управлять персонажем, и из-за того, что игра расширялась, поведение игрока добавлялось и возникла проблема, что у них код был весь там и скрипт стал огромным, хотя, скрипты должны обычно не превышать 200-300 строк. Поэтому сложно будет его потом поддерживать, отсюда и причина отказаться от таких названий и делать что-то более конкретное
отличный контент, рад что нашел активный канал) будет ли видео на тему "как не использовать монобех"? а то везде слышу, что монобехов должно быть мало и тд., как новичок не очень понимаю о чем тут речь и почему, а если и не использовать, то как тогда
А можете поподробнее рассказать, почему плохо этот паттерн пихать в player, bank и всё остальное? Вот много где ругаются на него, но почему, никто не объясняет. Пысы. Спасибо за уроки)
Как минимум два аргумента: 1. Это может стать бесконтрольным. Ваш проект может превратиться в месиво синглтонов, потому что "это же удобно, и у меня никогда не будет больше одного экземпляра этого класса". Бесконтрольное использование синглтона может вылиться в проблему номер 2. 2. Внезапно нужно все-таки создать еще один экземпляр чего-то, что было синглтоном. Например игрок. Вдруг поступило предложение делать локальный мультиплеер. И всё, весь проект накрывается медным тазом, потому что переделывать с синглтона игрока будет долго, мучительно и больно.
Всегда нужно думать, как обойтись без него, это лучший вариант. Однако, его можно использовать в модулях, например: аналитика, класс самой игры Game (это из урока по архитектуре, который выйдет завтра), управление рекламой в мобильном приложении, управление внутреигровыми покупками - то, что запускается и инициализируется единожды и существует на протяжении всей игровой сессии.
Не согласен с автором видео. Объяснение не очень подробное про то, почему плохо. Но не думаю, что смогу лучше. Классический пример, перезагрузка игры без выключения игры (накатываем прогресс другого игрока на устройство, обновляем вход через социальную сеть, игрок просто хочет все начать сначала). С синглотнами получается боль, потому что нужно вручную контролировать, что все данные очищаются. Либо писать, instance =null, instance = new Bank. Так же создавая синглтоны, мы говорим, что они создадуться лениво. Лениво - это когда они создаются не на старте игры, а при первом использовании (когда вызовем Bank.Instance). А теперь представьте, что синглтонам нужны еще синглтоны внутри, а тем тоже нужны синглтоны, еще и еще, вложенность синглтонов. И все они инициализируются в свои какие-то моменты времени. Вы просыпаетесь внезапно утром и понимаете, что когда в середине боя вы подбираете монетку - происходит дикий пролаг синглтонов, потом вы убиваете противника - еще пролаг. И вы не можете явно контролировать когда создавать синглтоны и какие классы их используют. А теперь игрок нажимает "Сброс прогресса", зависимости уничтожились не в том порядке, в котором создавались - произошел null reference или мы уничтожили не старый синглтон, а новый... мы даже не можем понять "а тот ли это синглтон". Да мы не можем даже понять какие синглтоны использует класс, не посмотрев внимательно на 200 строк и не зацепив глазом все методы и все строчки с SomeSingleton.Instance. А если в класс добавляем новый синглон - нужно не забыть его прокинуть в очистку. Вы начинаете разбираться и понимаете, что вы не можете контролировать ваш код. Не можете контролировать зависимости. Вы плачете. P.s. Синглтоны это не плохо, имхо, не нужно при любом раскладе их не использовать. Нужно попробовать, понять где можно и где нельзя. Синглтон понятный и простой паттерн, я видел большие проекты с синглтонами и все было в порядке. Вопрос в применимости и умению готовить
Это вопрос архитектуры. Один синглтон не может содержать абсолютно все ссылки, это неудобно и неправильно. Смотри уроки по архитектуре, там я буду об этом говорить
А если создаю пустые обьекты , и называю в соответствии с тем чем они управляют, Например обьект LootBoxSystem содержит функции с алгоритмами шанса спавна ценного предмета, эна этот обьект ссылается кнопка, которая по нажатию заспавнит рандомгый обьект с заданым шансом, так допускается делать? Просто создавать системы с функциями на сцене и к ним привязывать кнопки и другие события ?
Про первый пример. У GameManager есть статическое поле Instance. Разве при обращении к нему из других скриптов не происходит пробег по всем объектам на сцене как FindGameObject? Если да, то это же скажется на проиводительности
Нет, так не происходит. Статическое поле - это переменная принадлежащая классу, а не его объекту, только и всего. Там подобных действий под капотом не происходит, и на производительность не влияет.
@@davidhops3952 А чего ты хотел? Автор не программист, а любитель. Его основная работа - блогер. Программирование это просто его хобби, он не может толком объяснить научным языком как и для чего, как писать и тп, я уже молчу за отсутствие должного образования для права учить людей. Он рассказал то, что знает на уровне какого-нибудь пройденного курса в интернете за пару дней. Так что вывод, если кто-то хочет чему-то научиться, то поступайте в соответствующий университет, читайте книги и практикуйтесь, решая конкретные задачи, куча курсов есть от тех людей, у которых есть образование для обучения других людей, так как они более компетентные, чем просто любители программирования из ютуба
Эм,как я и говорил уже в одном комментарии,подход ооп,это не панацея,это нужно четко различать ,если это есть,это не значит что это нужно везде пихать,сразу вспоминаю 9ю роту,где учили обращению пластичной взрывчаткой.Как он говорил,не лепи куда попало ,так и тут,если твой функционал это 80 строк когда,и больше это некуда не пойдет,то не лепи сюда ооп)),и сразу проблем станет меньше)).А да, KeyCode.B это больше не работает)
Я как опытный программист хочу сказать что это максимально не правильная реализация паттерна. Но есть два нюанса: 1) Не хочу обижать автора 2) Не хочу чтобы некоторые полезные знания передавались другим людям. Так как будет появляться больше конкуренции в Google Play
@@kingofbattleonline К тому же автор не программист, а любитель. Его основная работа - блогер. Программирование это просто его хобби, он не может толком объяснить научным языком как и для чего, так как не компетентный, я уже молчу за отсутствие должного образования для права учить людей. Он рассказал то, что знает на уровне какого-нибудь пройденного курса в интернете за пару дней. Так что вывод, если кто-то хочет чему-то научиться, то поступайте в соответствующий университет, читайте книги и практикуйтесь, решая конкретные задачи, куча курсов есть от тех людей, у которых есть образование для обучения других людей, так как они более компетентные, чем просто любители программирования из ютуба
бесполезное видео. Подача уровня межпространственного тв из рика и морти: ой тут забыл, ой еще вот это, можно же хотя б немного заморочиться с монтажем. Сама тема не раскрыта: синглтон плохо незя, а почему, а что лучше? Единственное, что раскрыто, это проверка на дубликат, но это какой-то супер нераспространенный случай, как минимум, для соло разработчиков, возможно, если в средней\большой команде есть аутисты, то это будет полезно, но в целом видео бесполезное. Механика инстансов не обьяснена, а то если зритель не знает про нее, у него тогда еще вопрос возникнет. Казалось бы такие классные темы видео и так мало просмотров и подписчиков, очевидно из-за бездарного подхода. Не хочу показаться банальным ненавистником и желаю более серьезно подходить к качеству материала, от этого и зрители и канал будут в выйгрыше.
А чего ты хотел? Автор не программист, а любитель. Его основная работа - блогер. Программирование это просто его хобби, он не может толком объяснить научным языком как и для чего, я уже молчу за отсутствие должного образования для права учить людей. Он рассказал то, что знает на уровне какого-нибудь пройденного курса в интернете за пару дней. Так что вывод, если кто-то хочет чему-то научиться, то поступайте в соответствующий университет, читайте книги и практикуйтесь, решая конкретные задачи, куча курсов есть от тех людей, у которых есть образование для обучения других людей, так как они более компетентные, чем просто любители программирования из ютуба
Я здесь по приколу, смотрю подобные видео и ржу, потому что в основном все объясняют на уровне пройденного курса в инете за пару дней, при этом не раскрыв сути тем
Ахахахах, вконце посмеялся от души. Ооо, можно синглтон не прописывать, персонаж синглтон, все синглтон😂 Отличная подача, видно что человек понимает и разбирается в том, о чем говорит! Уже давно подписан
3 дня над этим голову ломал, а оказалось всё так просто) Спасибо)
в который раз даже при запросах на англ.яз, попадаю на твой канал. Значит подписка. Спасибо, годный контент.
Благодарю! Очень доходчево и понятно, кайф)
Спасибо, уже понятнее. Удобно когда доступ в любой точке проекта, жаль что нежелательная схема. Как бы это сделать чтобы не нужно было по полям всё тягать и без сложных доступов через десять ветвлений, неужели нет возможности более удобно работать.
Еще немножко не по теме, вопрос, как сделать формат фигурных скобок чтобы они сразу размещались в таком стиле, когда открытая стоит сразу в строке, а не внизу?
Для Bank нужно сделать private конструктор, без него мы можем создавать экземпляры банка.
я тот самый начинающий который узнал про синглтоны и хочет все через них делать) поэтому немного не хватило пояснения концовки - я понимаю почему много синглтонов это не очень хорошо, но для чего тогда этот паттерн, когда стоит использовать именно его? условно если в моей игре заведомо 1 игрок нормально ли его сделать синглтоном?
Синглтон неплохо подходит под задачу интеграции наружних сервисов: синглтон рекламы, платёжки, стим, аналитика и др. Всё остальное - на свое усмотрение, но игрок например - это, если вдаваться в абстракцию, персонаж с управлением. Поэтому обычно, его не делают синглтоном, т.к. все может поменяться. Но если тебе не страшно переделывать огромный кусок, если что, или ты вовсе не собираешься этого делать - то пользуйся, пожалуйста)
Годный контент, меньше воды, больше дела.
Конечно не хватает наглядности работы скриптов для полного понимания. Я как новичок, так вообще тук-тук, и сложно воспринимать: Что? Зачем? Почему? Надеюсь со временем придет). Но все равно респект 👍 и буду следить 🔔🙂
Наглядность работы скриптов я делаю через логи) не помню, есть в этом видео или нет, но в основном через логи. Этого достаточно, чтобы понять, что все работает и минимум времени, чтобы показать ту самую наглядность)
Спасибо за урок.
Подскажите почему класс c названием "GameManager" - это не очень хорошо?
Unity скрипт с именем "GameManager" отображает специальной иконкой - шестеренкой. То есть разработчики Unity, по всей видимости считают, что такой класс должен быть в проекте.
Т.к. в юнити низкий порог входа, то многие начинающие создают GameManager. Видимо юнити сделали эту шестеренку для них (честно говоря, ума не приложу, для чего). GameManager непонятно что делает, поэтому это плохо. Что он менеджерит? Игру? В каком смысле? Загрузка сцен? Тогда почему не SceneManager? Уровень? То есть LevelManager?
Вообще менеджер непонятно что делает. Что значит менеджерить? Вот поэтому классы со словом Managet не приветствуются. Потому что непонятно что они делать должны
Потому что Manager может делать всё, что угодно. А код нужно разбивать на понятные сущности. Большая сущность должна разбиваться на маленькие, но manager говорит о том, что в нём может быть всё, что касается того или иного, например игры - GameManager, это неправильно. Например, кто-то рассказывал, что в какой-то популярной игре был скрипт PlayerController, который изначально подразумевает, что он будет управлять персонажем, и из-за того, что игра расширялась, поведение игрока добавлялось и возникла проблема, что у них код был весь там и скрипт стал огромным, хотя, скрипты должны обычно не превышать 200-300 строк. Поэтому сложно будет его потом поддерживать, отсюда и причина отказаться от таких названий и делать что-то более конкретное
Хорошее видео. спасибо!
отличный контент, рад что нашел активный канал)
будет ли видео на тему "как не использовать монобех"? а то везде слышу, что монобехов должно быть мало и тд., как новичок не очень понимаю о чем тут речь и почему, а если и не использовать, то как тогда
Ответил на последнем стриме, видео будет когда-то)
Не наследовать класс от MonoBehaviuor?
@@redfox7193 уже не актуально
А можете поподробнее рассказать, почему плохо этот паттерн пихать в player, bank и всё остальное? Вот много где ругаются на него, но почему, никто не объясняет.
Пысы. Спасибо за уроки)
Как минимум два аргумента:
1. Это может стать бесконтрольным. Ваш проект может превратиться в месиво синглтонов, потому что "это же удобно, и у меня никогда не будет больше одного экземпляра этого класса". Бесконтрольное использование синглтона может вылиться в проблему номер 2.
2. Внезапно нужно все-таки создать еще один экземпляр чего-то, что было синглтоном. Например игрок. Вдруг поступило предложение делать локальный мультиплеер. И всё, весь проект накрывается медным тазом, потому что переделывать с синглтона игрока будет долго, мучительно и больно.
@@gamedevlavka а по каким критериям определить подходящие и неподходящие для паттерна случаи?
Всегда нужно думать, как обойтись без него, это лучший вариант. Однако, его можно использовать в модулях, например: аналитика, класс самой игры Game (это из урока по архитектуре, который выйдет завтра), управление рекламой в мобильном приложении, управление внутреигровыми покупками - то, что запускается и инициализируется единожды и существует на протяжении всей игровой сессии.
@@gamedevlavka спасибо за ответы! 🙏
Не согласен с автором видео. Объяснение не очень подробное про то, почему плохо. Но не думаю, что смогу лучше.
Классический пример, перезагрузка игры без выключения игры (накатываем прогресс другого игрока на устройство, обновляем вход через социальную сеть, игрок просто хочет все начать сначала).
С синглотнами получается боль, потому что нужно вручную контролировать, что все данные очищаются. Либо писать, instance =null, instance = new Bank.
Так же создавая синглтоны, мы говорим, что они создадуться лениво. Лениво - это когда они создаются не на старте игры, а при первом использовании (когда вызовем Bank.Instance).
А теперь представьте, что синглтонам нужны еще синглтоны внутри, а тем тоже нужны синглтоны, еще и еще, вложенность синглтонов. И все они инициализируются в свои какие-то моменты времени.
Вы просыпаетесь внезапно утром и понимаете, что когда в середине боя вы подбираете монетку - происходит дикий пролаг синглтонов, потом вы убиваете противника - еще пролаг. И вы не можете явно контролировать когда создавать синглтоны и какие классы их используют.
А теперь игрок нажимает "Сброс прогресса", зависимости уничтожились не в том порядке, в котором создавались - произошел null reference или мы уничтожили не старый синглтон, а новый... мы даже не можем понять "а тот ли это синглтон". Да мы не можем даже понять какие синглтоны использует класс, не посмотрев внимательно на 200 строк и не зацепив глазом все методы и все строчки с SomeSingleton.Instance. А если в класс добавляем новый синглон - нужно не забыть его прокинуть в очистку.
Вы начинаете разбираться и понимаете, что вы не можете контролировать ваш код. Не можете контролировать зависимости. Вы плачете.
P.s. Синглтоны это не плохо, имхо, не нужно при любом раскладе их не использовать. Нужно попробовать, понять где можно и где нельзя. Синглтон понятный и простой паттерн, я видел большие проекты с синглтонами и все было в порядке. Вопрос в применимости и умению готовить
А можно использовать синглтон например для системы оповещений?
А если создать синглтон с ссылками на экземляры других классов, этакий хаб, чем это грозит?
Это вопрос архитектуры. Один синглтон не может содержать абсолютно все ссылки, это неудобно и неправильно.
Смотри уроки по архитектуре, там я буду об этом говорить
@@gamedevlavka ну не все, а самые часто вызываемые, уроки конечно посмотрю. Давно толковых каналов не попадалось
Хотелось бы видео по паттерну декоратор и фабрика
Будет, записал в план)
@@gamedevlavka потрясающе) ждём
Мне кажется, что в awake ты его создаешь и сразу удаляешь. Запехни destroy в else if
Я тож так думаю, но подумал, что это я чего-то не шарю .-.
Ключевое слово return разве не прерывает метод?
@@def6141 точно!)
@@def6141 так вообще можно писать? Это считается нормой? Или лучше иф-элз юзать?
@@Kawabatushka конечно так можно писать) в данном случае иф-элз лишняя проверка.
А если создаю пустые обьекты , и называю в соответствии с тем чем они управляют,
Например обьект LootBoxSystem содержит функции с алгоритмами шанса спавна ценного предмета, эна этот обьект ссылается кнопка, которая по нажатию заспавнит рандомгый обьект с заданым шансом, так допускается делать?
Просто создавать системы с функциями на сцене и к ним привязывать кнопки и другие события ?
В идеальном мире таких штук должно быть минимальное количество)
Про первый пример. У GameManager есть статическое поле Instance. Разве при обращении к нему из других скриптов не происходит пробег по всем объектам на сцене как FindGameObject? Если да, то это же скажется на проиводительности
Нет, так не происходит. Статическое поле - это переменная принадлежащая классу, а не его объекту, только и всего. Там подобных действий под капотом не происходит, и на производительность не влияет.
@@gamedevlavka Спасибо! Я ошибался.
а как вы на лету меняете регистр символов? ))
Если я правильно понял вопрос, то это интеллектуальный набор редактора кода)
Не хочу как то обидеть, но очень странный стиль кода. Никогда такого не видел. Визуально больно читать просто
@@davidhops3952 А чего ты хотел? Автор не программист, а любитель. Его основная работа - блогер. Программирование это просто его хобби, он не может толком объяснить научным языком как и для чего, как писать и тп, я уже молчу за отсутствие должного образования для права учить людей. Он рассказал то, что знает на уровне какого-нибудь пройденного курса в интернете за пару дней. Так что вывод, если кто-то хочет чему-то научиться, то поступайте в соответствующий университет, читайте книги и практикуйтесь, решая конкретные задачи, куча курсов есть от тех людей, у которых есть образование для обучения других людей, так как они более компетентные, чем просто любители программирования из ютуба
Эм,как я и говорил уже в одном комментарии,подход ооп,это не панацея,это нужно четко различать ,если это есть,это не значит что это нужно везде пихать,сразу вспоминаю 9ю роту,где учили обращению пластичной взрывчаткой.Как он говорил,не лепи куда попало ,так и тут,если твой функционал это 80 строк когда,и больше это некуда не пойдет,то не лепи сюда ооп)),и сразу проблем станет меньше)).А да, KeyCode.B это больше не работает)
Я как опытный программист хочу сказать что это максимально не правильная реализация паттерна. Но есть два нюанса:
1) Не хочу обижать автора
2) Не хочу чтобы некоторые полезные знания передавались другим людям. Так как будет появляться больше конкуренции в Google Play
Хааххаха, а ты хорош
@@kingofbattleonline К тому же автор не программист, а любитель. Его основная работа - блогер. Программирование это просто его хобби, он не может толком объяснить научным языком как и для чего, так как не компетентный, я уже молчу за отсутствие должного образования для права учить людей. Он рассказал то, что знает на уровне какого-нибудь пройденного курса в интернете за пару дней. Так что вывод, если кто-то хочет чему-то научиться, то поступайте в соответствующий университет, читайте книги и практикуйтесь, решая конкретные задачи, куча курсов есть от тех людей, у которых есть образование для обучения других людей, так как они более компетентные, чем просто любители программирования из ютуба
@@Tera-h7e А я до сих пор не вижу своей ошибки. И на личности не переходил. Я "Любителя" поправил, все.
@@kingofbattleonline причем здесь ты, я тебе отвечаю насчёт автора видео
@@Tera-h7e А теперь подумай еще раз. Или не пытайся в эту сферу идти, маленький. С таким развитием у тебя только на завод дорога открыта
бесполезное видео. Подача уровня межпространственного тв из рика и морти: ой тут забыл, ой еще вот это, можно же хотя б немного заморочиться с монтажем. Сама тема не раскрыта: синглтон плохо незя, а почему, а что лучше? Единственное, что раскрыто, это проверка на дубликат, но это какой-то супер нераспространенный случай, как минимум, для соло разработчиков, возможно, если в средней\большой команде есть аутисты, то это будет полезно, но в целом видео бесполезное. Механика инстансов не обьяснена, а то если зритель не знает про нее, у него тогда еще вопрос возникнет. Казалось бы такие классные темы видео и так мало просмотров и подписчиков, очевидно из-за бездарного подхода. Не хочу показаться банальным ненавистником и желаю более серьезно подходить к качеству материала, от этого и зрители и канал будут в выйгрыше.
посоветуйте канал, который Вы считаете лучше
А чего ты хотел? Автор не программист, а любитель. Его основная работа - блогер. Программирование это просто его хобби, он не может толком объяснить научным языком как и для чего, я уже молчу за отсутствие должного образования для права учить людей. Он рассказал то, что знает на уровне какого-нибудь пройденного курса в интернете за пару дней. Так что вывод, если кто-то хочет чему-то научиться, то поступайте в соответствующий университет, читайте книги и практикуйтесь, решая конкретные задачи, куча курсов есть от тех людей, у которых есть образование для обучения других людей, так как они более компетентные, чем просто любители программирования из ютуба
Я здесь по приколу, смотрю подобные видео и ржу, потому что в основном все объясняют на уровне пройденного курса в инете за пару дней, при этом не раскрыв сути тем