Beispiel #1
0
        private void DeactivateObject(PoolingBehaviour subject)
        {
            _activeObjects.Remove(subject);
            _inactiveObjects.Add(subject);

            subject.gameObject.SetActive(false);
        }
    public PoolingBehaviour Spawn(int id, Vector3 position, Quaternion rotation, Transform transform)
    {
        PoolingBehaviour t = Spawn(id, position, transform);

        t.transform.rotation = rotation;
        return(t);
    }
    public PoolingBehaviour Spawn(int id, Vector3 position, Transform transform)
    {
        PoolingBehaviour t = Spawn(id, transform);

        t.transform.position = position;
        return(t);
    }
    public PoolingBehaviour Spawn(int id, Vector3 position, Quaternion rotation)
    {
        PoolingBehaviour t = Spawn(id, null);

        t.transform.position = position;
        t.transform.rotation = rotation;
        return(t);
    }
    public int AddPrefab(PoolingBehaviour prefabs)
    {
        if (pooledGobjects == null)
        {
            pooledGobjects = new List <PoolingType>();
        }
        if (list_Pooling == null)
        {
            list_Pooling = new List <PoolingType>();
        }
        int id = NextCode;

        list_Pooling.Add(new PoolingType(prefabs, id));
        return(id);
    }
Beispiel #6
0
        public PoolingBehaviour Instantiate()
        {
            PoolingBehaviour subject = null;

            if (_inactiveObjects.Count == 0)
            {
                subject = CreateNewObject();
            }
            else
            {
                subject = _inactiveObjects[0];

                _inactiveObjects.RemoveAt(0);
                _activeObjects.Add(subject);

                subject.Reset();
            }

            return(subject);
        }
    PoolingBehaviour CreateGobject(int id)
    {
        PoolingBehaviour prefab = null;

        if (list_Pooling == null || list_Pooling.Count == 0)
        {
        }
        else
        {
            foreach (PoolingType poolingType in list_Pooling)
            {
                if (poolingType.id == id)
                {
                    prefab = poolingType.gameobject;
                    break;
                }
            }
        }
        PoolingBehaviour ins = GameObject.Instantiate(prefab);

        pooledGobjects.Add(new PoolingType(ins, id));
        return(ins);
    }
    public PoolingBehaviour Spawn(int id, Transform transform)
    {
        PoolingBehaviour t = null;

        if (pooledGobjects != null && pooledGobjects.Count != 0)
        {
            for (int i = pooledGobjects.Count - 1; i > -1; i--)
            {
                if (pooledGobjects[i].gameobject == null)
                {
                    pooledGobjects.RemoveAt(i);
                    continue;
                }
                if (pooledGobjects[i].id == id && pooledGobjects[i].gameobject.isReady)
                {
                    t = pooledGobjects[i].gameobject;
                    break;
                }
            }
        }
        if (t == null)
        {
            t = CreateGobject(id);
        }
        if (transform == null)
        {
            t.transform.parent   = parentPooling;
            t.transform.position = Vector3.zero;
        }
        else
        {
            t.transform.parent   = transform;
            t.transform.position = transform.position;
        }
        t.Begin();
        return(t);
    }
Beispiel #9
0
        private void DeactivateObject(PoolingBehaviour subject)
        {
            _activeObjects.Remove(subject);
            _inactiveObjects.Add(subject);

            subject.gameObject.SetActive(false);
        }
 public PoolingType(PoolingBehaviour prefabs, int id)
 {
     this.id         = id;
     this.gameobject = prefabs;
 }