public void SpawnEnemy() { EnemyControl newEnemy = CheckForAvailableGarbageEnemy(); UnitStatsUI newEnemyUI = CheckForAvailableGarbageEnemyUI(); Transform spawnPoint = FindFurthestSpawnPoint(); if (newEnemy == null) { //Instantiate. newEnemy = Instantiate(prefabEnemy, spawnPoint.position, spawnPoint.rotation); newEnemyUI = Instantiate(prefabEnemyStatUI, Vector3.zero, Quaternion.identity); newEnemyUI.transform.SetParent(prefabEnemyStatUI.transform.parent, true); newEnemyUI.transform.localScale = Vector3.one; RectTransform rtUI = newEnemyUI.transform as RectTransform; rtUI.SetAsFirstSibling(); listGarbageEnemies.Add(newEnemy); listGarbageEnemyUIs.Add(newEnemyUI); } else { newEnemy.transform.position = spawnPoint.position; } newEnemy.gameObject.SetActive(true); //Pair UI and unit. newEnemyUI.tUnit = newEnemy.transform; newEnemy.statsUI = newEnemyUI; newEnemyUI.gameObject.SetActive(true); newEnemy.Init(); }
private UnitStatsUI CheckForAvailableGarbageEnemyUI() { UnitStatsUI ui = null; if (listGarbageEnemyUIs.Count > 0) { //Check which one is active. foreach (UnitStatsUI u in listGarbageEnemyUIs) { if (!u.isActiveAndEnabled) { ui = u; } } } return(ui); }