private void Awake() { hologram = Instantiate(prefab.gameObject).GetComponent <Spawnable>(); foreach (Collider2D c in hologram.GetComponentsInChildren <Collider2D>()) { Destroy(c); } foreach (Rigidbody2D c in hologram.GetComponentsInChildren <Rigidbody2D>()) { Destroy(c); } hologram.gameObject.SetActive(false); i.color = unselectedColor; Spawner s = FindObjectOfType <Spawner>(); if (s.toSpawn == null) { DoSelect(); } }
public static IEnumerator spawnEnemy(Spawnable target /*not already instantiated*/) { target = Instantiate(target.gameObject).GetComponent <Spawnable>(); foreach (Transform obj in target.GetComponentsInChildren <Transform>()) { foreach (SpawnSetting setting in obj.GetComponents <SpawnSetting>()) { if (setting.changeBefore) { setting.change(obj.gameObject); } } } Spawnable newTarget = Instantiate(target.gameObject).GetComponent <Spawnable>(); target.gameObject.SetActive(false); GameObject replacement = null; foreach (Transform obj in newTarget.GetComponentsInChildren <Transform>()) { if (obj.gameObject.tag != "PlaceHolder") { GameObject createdReplacement = null; if (obj.GetComponent <Enemy>() != null) { //warning createdReplacement = Instantiate(GameplayComponents.main.warning.gameObject); createdReplacement.GetComponent <Animator>().SetFloat("Delay", target.delay); } else if (obj.GetComponent <Enemy>() == null) { //blank createdReplacement = Instantiate(GameplayComponents.main.blank.gameObject); } if (obj.transform == newTarget.transform) { replacement = createdReplacement; /*replacement.AddComponent<AudioSource>(); * replacement.GetComponent<AudioSource>().clip = GameplayComponents.main.warningSound; * replacement.GetComponent<AudioSource>().Play();*/ } createdReplacement.transform.position = obj.transform.position; createdReplacement.transform.rotation = Quaternion.Euler(Vector3.zero); createdReplacement.transform.localScale = obj.localScale; createdReplacement.GetComponent <PlaceHolder>().original = obj.gameObject /* original prefab file, gotta fix*/; //make correct family tree Tools.ReplaceGameObject(obj.gameObject, createdReplacement); } } replacement.transform.SetParent(GameplayComponents.main.enemyHolder.transform); yield return(new WaitForSeconds(target.delay)); Destroy(replacement.gameObject); target.gameObject.SetActive(true); target.transform.SetParent(GameplayComponents.main.enemyHolder.transform); foreach (SpawnSetting setting in target.GetComponentsInChildren <SpawnSetting>()) { if (!setting.changeBefore) { setting.change(setting.gameObject); } } }