using System.Collections.Generic; using UnityEngine; // 敵のスポナー public class EnemySpawner : MonoBehaviour { [SerializeField] private Enemy enemyPrefab; [SerializeField] private Transform[] spawnPoints; [SerializeField] private float spawnInterval = 1.5f; [SerializeField] private int maxAliveCount = 20; private readonly List _aliveEnemies = new(); private float _spawnTimer; private void Update() { CleanupDestroyedEnemies(); _spawnTimer += Time.deltaTime; if (_spawnTimer < spawnInterval) return; _spawnTimer = 0f; Spawn(); } private void Spawn() { if (_aliveEnemies.Count >= maxAliveCount) return; var spawnPoint = spawnPoints[Random.Range( 0, spawnPoints.Length)]; var enemy = Instantiate( enemyPrefab, spawnPoint.position, spawnPoint.rotation); _aliveEnemies.Add(enemy); } private void CleanupDestroyedEnemies() { _aliveEnemies.RemoveAll(enemy => enemy == null); } }