示例#1
0
 private static string TypeToPath(PoolingObjects type)
 {
     return(type switch
     {
         PoolingObjects.Bullet => @"Prefabs/Bullet",
         _ => @""
     });
示例#2
0
    private GameObject preloadObject(PoolingObjects preloadObject, bool pool)
    {
        GameObject   newObj;
        PooledObject gameObjScript;

        if (preloadObject.customName == "")
        {
            preloadObject.customName = preloadObject.objectPrefab.name;
        }

        // Instantiate object and reset it transformation. Assign it as child to Pool
        newObj      = Instantiate(preloadObject.objectPrefab) as GameObject;
        newObj.name = preloadObject.customName;

        // Add PooledObject script, if needed
        if (preloadObject.addAutoPoolScript)
        {
            newObj.AddComponent <PooledObject>();
            gameObjScript            = newObj.GetComponent <PooledObject>();
            gameObjScript.parentPool = this;
        }

        // Add the new object to pool
        if (pool)
        {
            PoolObject(newObj, false);
        }

        return(newObj);
    }
示例#3
0
    public Transform Dequeue(PoolingObjects type)
    {
        Transform obj;

        if (objectQueues[type].Count > 0)
        {
            obj = objectQueues[type].Dequeue();
            obj.gameObject.SetActive(true);
        }
        else
        {
            obj = Instantiate(Resources.Load <Transform>(TypeToPath(type)));
        }

        return(obj);
    }
示例#4
0
 public void Enqueue(PoolingObjects type, Transform obj)
 {
     objectQueues[type].Enqueue(obj);
 }