Пример #1
0
    private static ObjectPool CreateNewPool(PooledObject prefab, int poolSize)
    {
        GameObject obj;
        ObjectPool pool;

        obj         = new GameObject(prefab.name + " Pool");
        pool        = obj.AddComponent <ObjectPool>();
        pool.prefab = prefab;

        //store the objects in corresponding categories
        if (prefab.GetComponentInChildren <AudioSource>())
        {
            StaticAudioPoolDictionary[prefab] = pool;
            obj.transform.parent = StaticAudioPoolReference.transform;
        }
        else if (prefab.GetComponentInChildren <ParticleSystem>())
        {
            StaticVFXPoolDictionary[prefab] = pool;
            obj.transform.parent            = StaticVFXPoolReference.transform;
        }
        else
        {
            StaticMiscPoolDictionary[prefab] = pool;
            obj.transform.parent             = StaticMiscPoolReference.transform;
        }

        //generate target number of pooled objects
        for (int i = 0; i < poolSize; i++)
        {
            pool.CreatePooledObject(i);
        }
        return(pool);
    }