Wpis z mikrobloga

Zaleca się w unity podobno pisanie PoolManagerów (tak to się nazywa?), które zarządzają obiektami z gry, które podlegają ciągłemu tworzeniu i usuwaniu - np pocisków. W jaki sposób mam te obiekty w puli ukrywać? Wystarczy SetActive czy może uaktywnianie obiektów powoduje takie same opóźnienia/zawirowania co tworzenie nowych? Czy może robi się to wszystko z innych powodów, niż opóźnienie?

#unity3d
  • 5
@Adenozynotrifosforan: zgadza się, tworzenie/niszczenie sporej ilości obiektów w realtimie powoduje opóźnienie - szczególnie widoczne na platformach mobilnych. SetActive jest lepszym rozwiązaniem niż tworzenie/niszczenie, a jeszcze lepiej np. wyłączać renderer, collider

@aklopis: no właśnie chodzi o to, żeby nie tworzyć/niszczyć obiekty, ale stworzyć sobie na starcie pulę np. 10 i włączać/wyłączać je w pętli po kolei, wedle potrzeb
@aklopis: odnosimy się do sytuacji, w której, gdy potrzebujemy nowego obiektu, tworzymy go od podstaw. Stare, niepotrzebne obiekty mogą albo być niszczone albo pozostawać nieużywane na scenie. Jeżeli je niszczymy, potrzebujemy czasu na zwolnienie pamięci. Jeżeli zostają na scenie, potrzebujemy coraz większych zasobów na zarządzanie nimi (szczególnie, gdy mają collidery lub, nie daj Boże, rigidbody).

Rozważamy tutaj sytuację pierwszą, czyli zarówno tworzenie jak i niszczenie - wykonywanie obu operacji równie często.