Что это: статический класс SpawnUtility — единая точка входа для спавна и деспавна объектов. Всегда работает через пул: если на сцене есть PoolManager, используются его пулы; иначе для каждого префаба создаётся свой пул. Пространство имён: Neo.Tools. Файл: Assets/Neoxider/Scripts/Tools/Spawner/SpawnUtility.cs.
Как с ним работать:
- Спавн:
GameObject go = SpawnUtility.Spawn(prefab, position, rotation, parent);или расширениеprefab.SpawnFromPool(position, rotation, parent). - Деспавн:
SpawnUtility.Despawn(go);илиgo.ReturnToPool();. - Не вызывать Destroy для объектов, созданных через Spawn — возвращать в пул через Despawn.
- PoolManager можно добавить на сцену позже — SpawnUtility подхватит его при следующем Spawn.
- Spawn(prefab, position, rotation, parent) — создаёт объект из пула. Если есть
PoolManager, используется он (пул для префаба создаётся при первом запросе). Если PoolManager нет — для префаба создаётся внутренний пул при первом вызове. Все последующие спавны/деспавны идут через пул. - Despawn(instance) — возвращает объект в пул или уничтожает (если объект не из пула).
- IsPoolAvailable — всегда
true(пул либо от PoolManager, либо свой). - DestroyFallbackPoolsOnSceneLoad — по умолчанию
true: при смене сцены fallback-пулы и их объекты уничтожаются. Еслиfalse, корень пулов не уничтожается при смене сцены (DontDestroyOnLoad). - ClearFallbackPools() — вручную очищает все fallback-пулы и уничтожает их корень.
Spawn(prefab)— позиция (0,0,0), поворот identity.Spawn(prefab, position)— заданная позиция.Spawn(prefab, position, rotation)— позиция и поворот.Spawn(prefab, position, rotation, parent)— полный вариант.Spawn(prefab, parent)— спавн как дочерний объект parent (локально в нуле).
// Спавн (пул или Instantiate)
GameObject go = SpawnUtility.Spawn(prefab, position, rotation, parent);
// Или через расширение
GameObject go = prefab.SpawnFromPool(position, rotation, parent);
// Деспавн
SpawnUtility.Despawn(go);
go.ReturnToPool();Все спавнеры (Spawner, SimpleSpawner) и Despawner используют эту логику. Пул можно добавить на сцену позже — спавн продолжит работать, а при появлении PoolManager начнёт использоваться пул.