| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- namespace WildAttack
- {
- /// <summary>
- /// 敌人池
- /// </summary>
- public class EnemyPool : Singleton<EnemyPool>, IObjectPool
- {
- #region Members
- private Dictionary<int, List<GameObject>> enemyObjs;
- private List<GameObject> enemyPfbs;
- private Transform poolTrans;
- #endregion
- #region Override
- public void Init()
- {
- poolTrans = GameObject.Find("EnemyPool").transform;
- enemyObjs = new Dictionary<int, List<GameObject>>();
- enemyObjs.Add(1, new List<GameObject>());
- enemyObjs.Add(2, new List<GameObject>());
- enemyObjs.Add(3, new List<GameObject>());
- enemyPfbs = new List<GameObject>();
- GameObject pfb1 = Resources.Load<GameObject>("Enemy/yellow/duyanguai_skin_jiandun");
- GameObject pfb2 = Resources.Load<GameObject>("Enemy/yellow/duyanguai_skin_fudun");
- GameObject pfb3 = Resources.Load<GameObject>("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<GameObject>(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<GameObject>(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<GameObject>(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
- /// <summary>
- /// 根据武器类型取对应obj
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- 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<GameObject>(enemyPfbs[id]);
- enemyObjs[id].Add(enemy);
- return enemy;
- }
- #endregion
- }
- }
|