Поиск pool объектов

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

Поиск pool объектов

Сообщение Marvin86 12 янв 2017, 19:41

Доброго времени! Начал осваивать пул объектов и появилась пара вопросов. Прошу знающих помочь)

1. Есть объекты стоящие на сцене, есть которые пулятся. Как искать объекты которые постоянно пулятся?
Если ищем так: GameObject.Find(Объект1).GetComponent<Скрипт1Объект1>();
То когда объекта нет, выдает ошибку, игра не крашится, но ошибка есть.
Можно ли этот способ поместить в Update?
2. Есть объект который пулится в большом количестве. Как сделать так, чтобы после пула, он был на сцене 1 секунду и возвращался в пул, т.е. чем 1 секунду его удержать? Коротиной? Просто много объектов, не будет ли грузить систему много коротин?
Marvin86
UNец
 
Сообщения: 2
Зарегистрирован: 21 дек 2016, 12:32

Re: Поиск pool объектов

Сообщение Paul Siberdt 12 янв 2017, 19:49

Marvin86 писал(а):1. Есть объекты стоящие на сцене, есть которые пулятся. Как искать объекты которые постоянно пулятся?
Если ищем так: GameObject.Find(Объект1).GetComponent<Скрипт1Объект1>();
То когда объекта нет, выдает ошибку, игра не крашится, но ошибка есть.
Можно ли этот способ поместить в Update?


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

Marvin86 писал(а):2. Есть объект который пулится в большом количестве. Как сделать так, чтобы после пула, он был на сцене 1 секунду и возвращался в пул, т.е. чем 1 секунду его удержать? Коротиной? Просто много объектов, не будет ли грузить систему много коротин?

Заведите состояния объекта пула, например, "активный" и "свободный". Рождайте объекты свободными в "надежном месте" и, при надобности, делайте их активными, обрабатывайте, считайте менеджером их время жизни и, возвращая в стостояние "свободный", снова прячьте в "надежное место".
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Поиск pool объектов

Сообщение Marvin86 12 янв 2017, 20:46

Paul Siberdt писал(а):Заведите состояния объекта пула, например, "активный" и "свободный". Рождайте объекты свободными в "надежном месте" и, при надобности, делайте их активными, обрабатывайте, считайте менеджером их время жизни и, возвращая в стостояние "свободный", снова прячьте в "надежное место".

Правильно ли я понял: нужно проверить активен ли объект?
Заранее спасибо!
Marvin86
UNец
 
Сообщения: 2
Зарегистрирован: 21 дек 2016, 12:32

Re: Поиск pool объектов

Сообщение samana 12 янв 2017, 21:27

Создайте массив (пул) ваших объектов и сделайте их все не активными (SetActive(false)).
Когда хотите взять объект из пула, то пробегайтесь по пулу и вытаскивайте первый попавшийся элемент, который не равен null и делайте его активным и тут же устанавливайте в пуле null для индекса этого объекта.
Когда хотите поместить объект обратно в пул, то ищите снова первый null в пуле и назначайте объект в это место.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Поиск pool объектов

Сообщение Paul Siberdt 12 янв 2017, 22:20

А SetActive не слишком ли затратная операция в сравнении с простым выносом объекта в жопеня за фруструм? Собственно, давно перестал пользовать SetActive, так давно, что и забыл, почему. :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Поиск pool объектов

Сообщение samana 12 янв 2017, 22:33

Paul Siberdt писал(а):А SetActive не слишком ли затратная операция в сравнении с простым выносом объекта в жопеня за фруструм? Собственно, давно перестал пользовать SetActive, так давно, что и забыл, почему. :)


Честно говоря не знаю, но ведь отключение объекта отключает и все его скрипты, поэтому объект точно будет "заморожен" полностью.
Я думал что фруструм-у приходится проверять все активные объекты на сцене, чтобы знать - какой объект рендерить, а отключение активности объекта как бы упрощает эту задачу.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 23