コード例 #1
0
    public void ClearPooledObjects(GameObject go)
    {
        ObjectPoolDefinition poolDefinition = null;

        for (int i = 0; i < itemsToPool.Count; ++i)
        {
            if (itemsToPool[i].poolObject.tag == go.tag)
            {
                poolDefinition = itemsToPool[i];
                break;
            }
        }

        if (poolDefinition != null)
        {
            var objects = pooledObjects[poolDefinition];
            if (objects != null)
            {
                for (int i = 0; i < objects.Count; ++i)
                {
                    if (objects[i].activeInHierarchy)
                    {
                        objects[i].SetActive(false);
                    }
                }
            }
        }
    }
コード例 #2
0
ファイル: ObjectPool.cs プロジェクト: stijndelaruelle/Deuren
    public void Initialize(ObjectPoolDefinition definition)
    {
        m_PooledObjects = new List <PoolableObject>();
        m_Definition    = definition;

        Clear();
        AddPooledObjects(definition.Amount);
    }
コード例 #3
0
    public GameObject GetPooledObject(string tag)
    {
        ObjectPoolDefinition poolDefinition = null;

        for (int i = 0; i < itemsToPool.Count; ++i)
        {
            if (itemsToPool[i].poolObject.tag == tag)
            {
                poolDefinition = itemsToPool[i];
                break;
            }
        }

        if (poolDefinition != null)
        {
            var objects = pooledObjects[poolDefinition];
            if (objects != null)
            {
                for (int i = 0; i < objects.Count; ++i)
                {
                    if (!objects[i].activeInHierarchy)
                    {
                        objects[i].SetActive(true);
                        if (objects[i].GetComponent <tk2dSpriteAnimator>() != null)
                        {
                            objects[i].GetComponent <tk2dSpriteAnimator>().Play();
                        }
                        return(objects[i]);
                    }
                }

                if (poolDefinition.IsExpandable)
                {
                    GameObject obj = Instantiate(poolDefinition.poolObject) as GameObject;
                    pooledObjects[poolDefinition].Add(obj);

                    if (poolDefinition.parentObject != null)
                    {
                        obj.transform.parent = poolDefinition.parentObject.transform;
                    }

                    return(obj);
                }
            }
        }

        Debug.Log("Requested a pooled object [" + tag + "] but could not retrieve it.");
        return(null);
    }