Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEngine;
- [System.Serializable]
- public class ObjectPoolItem
- {
- public GameObject objectToPool;
- public int amountToPool;
- public bool shouldExpand;
- }
- public class ObjectPooler : MonoBehaviour
- {
- public static ObjectPooler SharedInstance;
- List<GameObject> pooledObjects;
- public List<ObjectPoolItem> itemsToPool;
- private void Awake()
- {
- SharedInstance = this;
- }
- // Start is called before the first frame update
- void Start()
- {
- pooledObjects = new List<GameObject>();
- foreach (ObjectPoolItem item in itemsToPool)
- {
- for (int i = 0; i < item.amountToPool; i++)
- {
- GameObject obj = (GameObject)Instantiate(item.objectToPool);
- obj.SetActive(false);
- pooledObjects.Add(obj);
- }
- }
- }
- public GameObject GetPooledObject(string tag)
- {
- for (int i = 0; i < pooledObjects.Count; i++)
- {
- if (!pooledObjects[i].activeInHierarchy && pooledObjects[i].tag == tag)
- {
- return pooledObjects[i];
- }
- }
- foreach (ObjectPoolItem item in itemsToPool)
- {
- if (item.objectToPool.tag == tag)
- {
- if (item.shouldExpand)
- {
- GameObject obj = (GameObject)Instantiate(item.objectToPool);
- obj.SetActive(false);
- pooledObjects.Add(obj);
- return obj;
- }
- }
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement