Files
Gnome-s-Bounty/Assets/Scripts/CharacterSpawner.cs
T

59 lines
1.5 KiB
C#

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<Character> _characters;
// Start is called before the first frame update
private void Start()
{
if(_spawnPoint==null)
{
_spawnPoint=gameObject.transform;
}
_characters=new List<Character>();
}
// 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>();
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);
}
}