Что это: компонент Spawner (пространство имён Neo.Tools, файл Assets/Neoxider/Scripts/Tools/Spawner/Spawner.cs) для периодического или разового спавна объектов из списка префабов. Использует SpawnUtility и при наличии — PoolManager. Подходит для врагов, дропа, эффектов.
Как с ним работать:
- Добавить компонент
Spawnerна объект в сцене. - В инспекторе задать массив префабов, интервалы (
minSpawnDelay/maxSpawnDelay), при необходимости — лимит (spawnLimit), задержку уничтожения (destroyDelay), зону спавна (Collider/Collider2D). - Запуск: автоматически при
spawnOnAwakeили вызовомStartSpawning()из кода/события. Остановка —StopSpawning(). - Реакция на спавн — подписаться на UnityEvent или использовать вызовы из кода.
Ключевые особенности:
- Спавн случайных префабов из заданного списка.
- Интеграция с
PoolManagerдля оптимизации производительности (можно отключить). - Автоматическое уничтожение объектов с настраиваемой задержкой.
- Ограничение количества создаваемых объектов (
spawnLimit). - Настройка интервалов между спавнами (
minSpawnDelay,maxSpawnDelay). - Возможность спавна в пределах
Collider(3D) илиCollider2D(2D). - Автоматический запуск спавна при старте сцены (
spawnOnAwake). - Удобные кнопки в инспекторе для тестирования (
[Button]). - Событие
UnityEventдля реакции на спавн объекта. - Диапазоны поворота по осям (Эйлера): три
Vector2для X/Y/Z. - Режим поворота: локальный (относительно точки спавна) или мировой.
- Отдельная настройка родителя: при
null— спавн без родителя. - Оптимизация: при нулевых диапазонах углов пропускается расчёт случайных значений.
Улучшения в v5.2.21:
- Поле
prefabsпреобразовано в свойство для лучшей инкапсуляции - Добавлена валидация null и пустых массивов во всех методах спавна
- Улучшен
OnValidate()с автоматической проверкой диапазонов и null-элементов - Добавлены информативные сообщения об ошибках для отладки
| Имя | Тип | Описание |
|---|---|---|
prefabs |
GameObject[] |
Массив префабов, которые могут быть созданы. (Свойство с валидацией в v5.2.21) |
destroyDelay |
float |
Задержка в секундах перед удалением объекта. Если 0, объект не удаляется автоматически. |
spawnLimit |
int |
Максимальное количество объектов для спавна. Если 0, спавн бесконечен. |
minSpawnDelay |
float |
Минимальная задержка между автоматическим спавном объектов. |
maxSpawnDelay |
float |
Максимальная задержка между автоматическим спавном объектов. |
isSpawning |
bool |
(Только для чтения) Возвращает true, если спавнер в данный момент активен. |
SpawnedObjects |
List<GameObject> |
(Только для чтения) Список всех активных, созданных этим спавнером объектов. |
| Метод | Возвращаемое значение | Описание |
|---|---|---|
StartSpawn() |
void |
Запускает процесс автоматического спавна объектов. Доступен как кнопка в инспекторе. |
StopSpawn() |
void |
Останавливает процесс автоматического спавна. Доступен как кнопка в инспекторе. |
SpawnObjects() |
IEnumerator |
Корутина, реализующая логику автоматического спавна с задержками. |
SpawnRandomObject() |
GameObject |
Создает случайный префаб из массива prefabs в случайной точке спавна. Возвращает созданный объект. Доступен как кнопка в инспекторе. |
SpawnById(int prefabId, Vector3 position) |
GameObject |
Создает префаб по его индексу (prefabId) в массиве prefabs в указанной position. Возвращает созданный объект. |
SpawnObject(GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) |
GameObject |
Основной метод спавна/получения из пула с явными параметрами позиции, поворота и родителя. Возвращает созданный объект. |
GetSpawnPosition() |
Vector3 |
Возвращает случайную позицию внутри _spawnAreaCollider или _spawnAreaCollider2D. Если коллайдеры не заданы, возвращает позицию самого спавнера. |
Clear() |
void |
Останавливает спавн и немедленно удаляет (или возвращает в пул) все созданные объекты. Доступен как кнопка в инспекторе. |
GetActiveObjectCount() |
int |
Возвращает количество активных объектов, созданных спавнером. |
| Событие | Параметры | Описание |
|---|---|---|
OnObjectSpawned |
UnityEvent<GameObject> |
Вызывается каждый раз после успешного создания нового объекта. Передает созданный GameObject в качестве параметра. |
- Rotation Settings:
Rotation X/Y/Z (Vector2): диапазоны углов в градусах для соответствующих осей.Use Local Rotation (bool): локальный (относительно точки спавна) или мировой поворот.
- Parenting:
Parent Transform (Transform): родитель создаваемых объектов. Еслиnull— объекты остаются без родителя.- Родительство применяется после создания; глобальная поза сохраняется (
SetParent(parent, worldPositionStays: true)).