Skip to content

Latest commit

 

History

History
83 lines (65 loc) · 7.61 KB

File metadata and controls

83 lines (65 loc) · 7.61 KB

Spawner

Что это: компонент Spawner (пространство имён Neo.Tools, файл Assets/Neoxider/Scripts/Tools/Spawner/Spawner.cs) для периодического или разового спавна объектов из списка префабов. Использует SpawnUtility и при наличии — PoolManager. Подходит для врагов, дропа, эффектов.

Как с ним работать:

  1. Добавить компонент Spawner на объект в сцене.
  2. В инспекторе задать массив префабов, интервалы (minSpawnDelay / maxSpawnDelay), при необходимости — лимит (spawnLimit), задержку уничтожения (destroyDelay), зону спавна (Collider/Collider2D).
  3. Запуск: автоматически при spawnOnAwake или вызовом StartSpawning() из кода/события. Остановка — StopSpawning().
  4. Реакция на спавн — подписаться на UnityEvent или использовать вызовы из кода.

Класс Spawner

Ключевые особенности:

  • Спавн случайных префабов из заданного списка.
  • Интеграция с 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 Возвращает количество активных объектов, созданных спавнером.

Unity Events

Событие Параметры Описание
OnObjectSpawned UnityEvent<GameObject> Вызывается каждый раз после успешного создания нового объекта. Передает созданный GameObject в качестве параметра.

Примечания по настройкам инспектора

  • Rotation Settings:
    • Rotation X/Y/Z (Vector2): диапазоны углов в градусах для соответствующих осей.
    • Use Local Rotation (bool): локальный (относительно точки спавна) или мировой поворот.
  • Parenting:
    • Parent Transform (Transform): родитель создаваемых объектов. Если null — объекты остаются без родителя.
    • Родительство применяется после создания; глобальная поза сохраняется (SetParent(parent, worldPositionStays: true)).