void InitializeCharacter() { countCharacter = characterPrefabs.Length; // 啟用角色 characterContainers = new Transform[countCharacter]; poolFXHit = GetComponent <ObjectPoolManager>().CreatObjPool(fxHit, 30); poolFXExplosion = GetComponent <ObjectPoolManager>().CreatObjPool(fxExplosion, 30); hitEventHandler = new HitEventHandler <HItEventArgs> [countCharacter]; SetHitEventHandler(); }
// 建立物件池 public ObjPoolData CreatObjPool(GameObject obj, int number) { // 查詢物件池索引有無相同物件 if (objPoolIndex.ContainsKey(obj.name)) { ObjPoolData poolData = objPoolIndex[obj.name]; //Debug.Log(poolData.index + " / " + AirEarlyWarning.instance.numBattlePilot * 2 * number); if (poolData.index < countMaximum * number) { for (int i = 0; i < number; i++) { GameObject go = Instantiate(obj) as GameObject; go.transform.SetParent(poolData.container); if (poolData.index <= poolData.pool.Count) { go.name = go.name + " " + poolData.pool.Count; } else { go.name = go.name + " " + poolData.index; } //go.GetComponent<ObjectPoolRecoverySystem>().RecoverCallee += poolData.Recovery; go.GetComponent <ObjectPoolRecoverySystem>().OPD = poolData; go.SetActive(false); poolData.pool.Enqueue(go); poolData.index++; } } return(poolData); } // 若無 else { // 創建新物件池資料 ObjPoolData newPoolData = new ObjPoolData(); newPoolData.pool = new Queue <GameObject>(); newPoolData.container = new GameObject().transform; newPoolData.container.transform.SetParent(transform); newPoolData.container.name = obj.name; for (int i = 0; i < number; i++) { GameObject go = Instantiate(obj) as GameObject; go.transform.SetParent(newPoolData.container); if (newPoolData.index <= newPoolData.pool.Count) { go.name = go.name + " " + newPoolData.pool.Count; } else { go.name = go.name + " " + newPoolData.index; } // go.GetComponent<ObjectPoolRecoverySystem>().RecoverCallee += newPoolData.Recovery; go.GetComponent <ObjectPoolRecoverySystem>().OPD = newPoolData; go.SetActive(false); newPoolData.pool.Enqueue(go); newPoolData.index++; } // 將資料加入物件池總管 objPoolIndex.Add(obj.name, newPoolData); return(newPoolData); } }