using System.Collections; using System.Collections.Generic; using UnityEngine; namespace WildAttack { /// /// 敌人池 /// public class EnemyPool : Singleton, IObjectPool { #region Members private Dictionary> enemyObjs; private List enemyPfbs; private Transform poolTrans; #endregion #region Override public void Init() { poolTrans = GameObject.Find("EnemyPool").transform; enemyObjs = new Dictionary>(); enemyObjs.Add(1, new List()); enemyObjs.Add(2, new List()); enemyObjs.Add(3, new List()); enemyPfbs = new List(); GameObject pfb1 = Resources.Load("Enemy/yellow/duyanguai_skin_jiandun"); GameObject pfb2 = Resources.Load("Enemy/yellow/duyanguai_skin_fudun"); GameObject pfb3 = Resources.Load("Enemy/yellow/duyanguai_skin_maodun"); enemyPfbs.Add(pfb1); enemyPfbs.Add(pfb2); enemyPfbs.Add(pfb3); for (int i = 0; i < ProcessModule.GetInstance().processDataDic[ProcessModule.GetInstance().processDataDic.Count].monsterId.Count; i++) { GameObject enemy = GameObject.Instantiate(pfb1, poolTrans); enemy.SetActive(false); enemyObjs[1].Add(enemy); } for (int i = 0; i < ProcessModule.GetInstance().processDataDic[ProcessModule.GetInstance().processDataDic.Count].monsterId.Count; i++) { GameObject enemy = GameObject.Instantiate(pfb2, poolTrans); enemy.SetActive(false); enemyObjs[2].Add(enemy); } for (int i = 0; i < ProcessModule.GetInstance().processDataDic[ProcessModule.GetInstance().processDataDic.Count].monsterId.Count; i++) { GameObject enemy = GameObject.Instantiate(pfb3, poolTrans); enemy.SetActive(false); enemyObjs[3].Add(enemy); } } public GameObject GetGameObject() { return null; } public void RecycleAll() { for (int i = 0; i < poolTrans.childCount; i++) { if (poolTrans.GetChild(i).gameObject.activeSelf) { poolTrans.GetChild(i).gameObject.SetActive(false); } } } #endregion #region Functions /// /// 根据武器类型取对应obj /// /// /// public GameObject GetGameObject(int id) { GameObject enemy; for (int i = 0; i < enemyObjs[id].Count; i++) { if (!enemyObjs[id][i].activeInHierarchy) { return enemyObjs[id][i]; } } enemy = GameObject.Instantiate(enemyPfbs[id]); enemyObjs[id].Add(enemy); return enemy; } #endregion } }