Тёмный
No video :(

Пул объектов в юнити / Оптимизация в юнити / Pool object in Unity 

naxa1ka
Подписаться 124
Просмотров 5 тыс.
50% 1

В данном видео ролике разберем такую интересную тему как пул объектов.
Данный шаблон позволит нам уменьшить количество лагов в нашей игре при создании множества объектов.
Референс - • Оптимизация. Пул объек...
Таймлайны:
0:00 - Приветствие
0:10 - А зачем
0:38 - Объекта пула
1:07 - Создания самого пула
2:01 - OnValidate
2:34 - Инициализация пула
2:51 - Создаем объекты
3:07 - Два зайца
3:45 - Свободны элементы
4:29 - Расширение функциональности
5:09 - Подстраиваем нашу игру под пул
5:40 - Настройка пула
6:14 - Всем пока!

Опубликовано:

 

17 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 40   
@bonefort1437
@bonefort1437 Год назад
На мой взгляд самое понятное видео по пулам на русскоязычном ютубе
@user-ox6eq9dz8o
@user-ox6eq9dz8o 2 года назад
спасибо, лучшее обьяснение которое увидел про эту тему. Очень понравилась наглядная демонстрация через такой хороший пример.
@Michaelovesyou
@Michaelovesyou 2 года назад
Делай больше такого замечательного, пожалуйста.
@yummybunny7351
@yummybunny7351 2 года назад
Отличная тема, приятный голос. Спасибо что увеличил шрифт. Для идеала еще ссылку на получившийся код
@naxa1ka
@naxa1ka 2 года назад
Спасибо, учту, новые видео будут как с работой разберусь!
@Sluchayno
@Sluchayno Месяц назад
Пул объектов хороший паттерн, который действительно существенно оптимизирует игру и разгружает память(при условии что объектов на сцене действительно много) Но вот реализация в видео этого паттерна хромает. Надеюсь за 2 года с момента выхода этого видео вы пересмотрели свои подходы к проектированию архитектуры кода в целом, потому что код с видео ужасен )
@naxa1ka
@naxa1ka 2 года назад
Примечание: Лучше сделать класс Pool не MonoBehaviour и прокидывать его зависимости в конструктор(контейнер, префаб и тд), так гибче удобнее и прочее С опытом осознал что все, что можно сделать не MonoBehaviour лучше делать не MonoBehaviour
@youchinafriend
@youchinafriend 2 года назад
ПРОЛОЛЖААААААЙ О МУДРЫЙ ЧЕЛОВЕК!
@yagdra
@yagdra 2 года назад
Unity в 2021 добавили серию своих оптимизированных пулов, обратите внимание на ObjectPool, ListPool, GenericPool и пр.
@OleksandraKonon
@OleksandraKonon 3 года назад
Спасибо, очень полезная инфа))
@requiem_for_a_dream5463
@requiem_for_a_dream5463 2 года назад
Спасибо!
@redmanone6963
@redmanone6963 2 года назад
Чудесное видео.
@bigbluepie8983
@bigbluepie8983 Год назад
Братик, сделай урок как сделать бесконеный ранер!
@Eduard02834
@Eduard02834 2 года назад
Sposibo bolshoe
@user-ji4iy8db5k
@user-ji4iy8db5k 2 года назад
Почему бы не использовать вместо List'а Stack? Тогда бы не пришлось постоянно перебирать коллекцию объектов, чтобы найти свободный.
@naxa1ka
@naxa1ka 2 года назад
Да, хорошее замечание, полностью согласен, после записи уже подумал об этом)
@assasinvm
@assasinvm 2 года назад
Почему такое хорошие видео и всего 50 просмотров?!!!
@naxa1ka
@naxa1ka 2 года назад
Спасибо большое! Буду стараться, скоро думаю ещё выйдут видосы
@NewUser78654
@NewUser78654 9 месяцев назад
Я бы не стал называть пул объектов шаблоном проектирования (хотя в вики он и описан как шаблон, правда там статья на пару строк). В последнее время шаблонами стали называть любые решения, что не программист-код, то очередной шаблон. Вот gof - это шаблоны, или шаблоны на рефракторинг гуру (не помню есть там что то не из gof ). С точки зрения оптимизации памяти идея понятна. Но с точки зрения ООП и архитектуры идея плохая. Мы моделируем реальный мир и каждый объект в нем должен быть уникален. Количество состояний объекта в процессе игры может быть любое. И использовать один и тот же объект, следить за его состоянием, следить за количеством объектов в пуле (если надо больше, например) - это куча проблем. Пример. Игрок кидает гранаты в противника. Кучу гранат. Граната летит, падает и через 3 сек взрывается. Пул объектов - гранаты. Возвращение в пул через 3 сек. Оптимизировали - хорошо. Но тут поступает задача - что противник может взять гранату, чтобы кинуть её назад. И в этом случае нужно увеличить таймер гранаты на 3 сек. Граната дольше "живет" на сцене, на сцене может быть больше гранат - нужно увеличить пул. Оптимизация падает. И тут поступает новая задача - противник может взять гранату и оставить её себе, чтобы кинуть её потом. Пул объектов?...Метка какая граната из пула у противника?..... Начались проблемы. ООП. Парадигмы. Идея создания экземпляра объекта. Конструктор, деструктор. Всё нам прямо говорит - создавай гранату как экземпляр класса граната. Уничтожай объект - инстанс, ссылки. И не будет никаких проблем, при любых задачах.
@orange5664
@orange5664 5 месяцев назад
Это unity, ООП здесь иногда не применимо. Поиграйте в bullets hell игры без пула, увидите через 10 минут просадку (потому что память очищается только при перезагрузке сцены). А касательно примера: что мешает создать класс item, в нем стейты (none, hold, use) и гранату наследовать от него. В пул передавать item, и он будет универсальным для всех предметов в игре. Пока !enum.use - сколько угодно можно переиспользовать предмет
@NewUser78654
@NewUser78654 5 месяцев назад
@@orange5664 Это C# - и ООП здесь полностью применимо. Если есть проблемы с памятью - то надо работать с памятью. Если что то не отчищается - возможно вы не знаете как отчищать память (продвинутая работа с сборщиком мусора). В 99% роликов по юнити показаны непроизводительные, неверные подходы к разработке и реализации типового функционала. Большинство авторов роликов пишут откровенно плохой код, но рабочий код. И в тестовых проектах, в небольших проектах код работает. А когда начинаешь разработку реального проекта - подобный код вызывает множество проблем.
@crazymax5204
@crazymax5204 2 года назад
Я остановился на половине видео потому что мне не хватает знаний все это понять😅. Можешь посоветовать ресурс на русском где можно нормально поучиться кодить на юнити, а не собирать информацию по клочкам?
@naxa1ka
@naxa1ka 2 года назад
Если тебе нужно изучить c#: ulearn Если юнити: смотри Ютуб, практикуйся, в голове потом все само соберётся, курсы это конечно хорошо, но их мало и очень дорогие Можешь ещё почитать книжку: "Unity в действии". Удачи!
@crazymax5204
@crazymax5204 2 года назад
@@naxa1ka большое спасибо!!!
@Skywalker06gg
@Skywalker06gg 2 года назад
Очень классное видео, но приходится скорость ставить на 0.5 чтобы понять все И такой вопрос: Можно ли при отсутствии свободного элемента в пуле не выбрасывать исключение, а отключить самый первый активированный объект и уже его вернуть как свободный?
@naxa1ka
@naxa1ka 2 года назад
А вдруг он используется? Лучше так не делать, вдруг что-то пропадает используемое. с экспешенами я вообще погорячился, можно просто debug.logError
@Skywalker06gg
@Skywalker06gg 2 года назад
@@naxa1ka понял, спасибо!
@rybinded
@rybinded 2 года назад
Я так понял что автор хорошо разбирается в теме, но блин... А можно еще быстрее все говорить и ускорить видео еще больше? Действий столько и по скрипту так бегаешь что хрен разберешь что на экране...
@antigames4656
@antigames4656 Год назад
Для этого можно поменять скорость воспроизведения ниже и должно быть норм 😊
@oldosgame
@oldosgame 2 года назад
ничего непонятно. некоторые фрагменты кода не работают
@vensentlion4944
@vensentlion4944 2 года назад
Какой прирост fps дает? я на ноуте пробую через pool и instantiate - разницы вообще никакой
@naxa1ka
@naxa1ka 2 года назад
На малых проектах это незаметно. Механизм работы немного другой: Когда мы много создаём и удаляем объектов в какой момент может придти GC и создать фриз в игре(если смотреть в профайлере резкие скачки в области памяти)
@yummybunny7351
@yummybunny7351 2 года назад
Сакутин из-за ника "naxa1ka" подумал что ты трап)))
@naxa1ka
@naxa1ka 2 года назад
Там долгая история возникновения ника)
@user-cc4bp5nm1z
@user-cc4bp5nm1z 2 года назад
@@naxa1ka расскажи) Жду новые видео, если ещё про DI в юнити расскажешь, то цены тебе не будет
@user-pd9eq4dq7n
@user-pd9eq4dq7n Год назад
А почему бы не рассмотреть уже встроенный в unity ObjectPool? Как по мне, таких уроков уже до фига и больше, как сделать свой pool. Лучше разобрать что то новое.
@pol1merka470
@pol1merka470 2 года назад
А как сделать так чтоб пуля удолялась? Ну после вылета из оружия?
@user-gy4vt6my3y
@user-gy4vt6my3y 2 года назад
корутины
@sochnyiofficial
@sochnyiofficial 2 года назад
@@user-gy4vt6my3y Не обязательно, можно после написать Destroy(bullet, 1f), где 1f - время в секундах
Далее
State Pattern - Advanced C# in Unity
6:55
Просмотров 38 тыс.
Get 10 Mega Boxes OR 60 Starr Drops!!
01:39
Просмотров 14 млн
Fancy VS Classic #shorts  @CRAZYGREAPA
00:33
Просмотров 1,5 млн
Introduction To Object Pooling In Unity
4:14
Просмотров 45 тыс.
Dear Game Developers, Stop Messing This Up!
22:19
Просмотров 703 тыс.
Всё про корутины в Unity 3D
13:18
Просмотров 100 тыс.
Get 10 Mega Boxes OR 60 Starr Drops!!
01:39
Просмотров 14 млн