using System.Collections; using UnityEngine; public class AiManager : MonoBehaviour { public Transform player; public float cullingDistance; public GameObject aiPrefab; private GameObject[] _ais; private float _distance; public int maxAI; private void Start() { StartCoroutine(Manager()); } private void OnDrawGizmos() { Gizmos.color = Color.yellow; Gizmos.DrawWireSphere(player.position, cullingDistance); } // ReSharper disable Unity.PerformanceAnalysis private IEnumerator Manager() { while (true) { _ais = GameObject.FindGameObjectsWithTag("AIs"); if (_ais.Length < maxAI ) { var instance = Instantiate(aiPrefab, gameObject.transform); } foreach (var i in _ais) { _distance = Vector3.Distance(i.transform.position, player.position); if (_distance > cullingDistance) Destroy(i.gameObject); } yield return new WaitForSeconds(1); } } }