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);
        }
    }