Exemplo n.º 1
0
 public T AllocateGameObject <T>(Transform parent) where T : PoolObject
 {
     for (int i = 0; i < capacity; i++)
     {
         if (!isUsed[i])
         {
             if (gameObjectPool[i])
             {
                 gameObjectPool[i].transform.SetParent(parent);
                 gameObjectPool[i].transform.localPosition = gameObjectDefaultPosition;
                 gameObjectPool[i].transform.localRotation = gameObjectDefaultRotation;
                 gameObjectPool[i].transform.localScale    = gameObjectDefaultScale;
                 used++;
                 notUsed--;
             }
             else
             {
                 gameObjectPool[i] = Instantiate(gameObjectPrefab, parent);
                 gameObjectPool[i].PoolObjectInstanceID = PoolObject.GenerateInstanceID();
                 gameObjectPool[i].name = gameObjectPrefab.name + "_" + i;//便于调试的时候分辨对象
                 gameObjectPool[i].SetObjectPool(this);
                 empty--;
                 used++;
             }
             isUsed[i] = true;
             gameObjectPool[i].isPoolAvailable = false;
             return((T)gameObjectPool[i]);
         }
     }
     expandCapacity();
     return(AllocateGameObject <T>(parent));
 }