public int m_poolAmount = 20;//amount of each type of explosion // Use this for initialization void Start() { //object pooling m_player = GameObject.FindObjectOfType <Player>(); m_camera = GameObject.FindObjectOfType <IsoCam>(); for (int numType = 0; numType < m_explosionPrefabs.Length; ++numType) { List <ExplosionItem> explosionType = new List <ExplosionItem>(); for (uint i = 0; i < m_poolAmount; ++i) { if (m_explosionPrefabs[numType] != null) { ExplosionItem newExplosion = new ExplosionItem(); newExplosion.m_object = (GameObject)Instantiate(m_explosionPrefabs[numType], this.transform); Explosion explosionScript = newExplosion.m_object.GetComponent <Explosion>(); if (explosionScript != null) { newExplosion.m_shockWaveStrength = explosionScript.m_shockWaveStrength; newExplosion.m_type = explosionScript.m_type; } newExplosion.m_object.SetActive(false); explosionType.Add(newExplosion); } } m_explosionPool.Add(explosionType); } }
public static void Explode(string name, Vector3 position) { if (!instance) { return; } ExplosionItem explosion = instance.explosions.Find(x => x.name == name); if (explosion != null) { GameObject obj = Instantiate(explosion.explosion, position, Quaternion.identity); Destroy(obj, explosion.timer); } }