using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class CharacterSpawner : MonoBehaviour { [SerializeField] private GameObject _prefab; [SerializeField] private int _maxCharacters=1; [SerializeField] private Transform _spawnPoint; private int _respawnTimeout = 4; private float _respawnElementTimer; private List _characters; // Start is called before the first frame update private void Start() { if(_spawnPoint==null) { _spawnPoint=gameObject.transform; } _characters=new List(); } // Update is called once per frame private void Update() { if(_characters.Count<_maxCharacters) { _respawnElementTimer -= Time.deltaTime; if (_respawnElementTimer <= 0) { _respawnElementTimer = _respawnTimeout; var prefab= Instantiate(_prefab, _spawnPoint.position, _spawnPoint.rotation); var character=prefab.GetComponent(); character.OnCharacterDeath+=OnCharacterDeath; _characters.Add(character); } return; } } private void OnCharacterDeath(object sender, EventArgs e) { var character=(sender as Character); character.OnCharacterDeath-=OnCharacterDeath; _characters.Remove(character); Destroy(character.gameObject); } }