Advertisement
jwow22

Untitled

Dec 27th, 2021
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.68 KB | None | 0 0
  1. using System;
  2. using ScriptableEvents.Runtime_Sets;
  3. using UnityEngine;
  4.  
  5. public class ObjectPool : MonoBehaviour
  6. {
  7.     [NonSerialized] public static ObjectPool Instance;
  8.    
  9.     [Header("Runtime Sets")]  
  10.     [SerializeField] private RuntimeSetGo setPooled;
  11.     [SerializeField] private RuntimeSetGo setActive;
  12.  
  13.     [Header("Pooling")]
  14.     public GameObject objectPrefab;
  15.     public int amountToPool;
  16.  
  17.     private void Setup()
  18.     {
  19.         for (int i = 0; i < amountToPool; i++)
  20.         {
  21.             GameObject go = Instantiate(objectPrefab);
  22.             go.SetActive(false);
  23.             setPooled.Add(go);
  24.         }
  25.     }
  26.  
  27.     public GameObject Create()
  28.     {
  29.         if (setPooled.Items.Count == 0) { return null; }
  30.        
  31.         GameObject objectToSpawn = setPooled.Last;
  32.         if (objectToSpawn != null)
  33.         {
  34.             objectToSpawn.SetActive(true);
  35.            
  36.             setPooled.Remove(objectToSpawn);
  37.             setActive.Add(objectToSpawn);
  38.            
  39.             return objectToSpawn;
  40.         }
  41.  
  42.         return null;
  43.     }
  44.  
  45.     public void Return(GameObject go)
  46.     {
  47.         if (setActive.Count == 0) { return; }
  48.        
  49.         go.SetActive(false);
  50.        
  51.         setActive.Remove(go);
  52.         setPooled.Add(go);
  53.     }
  54.  
  55.     private void Awake()
  56.     {
  57.         if (Instance == null) { Instance = this; }
  58.         else { Destroy(this); }
  59.        
  60.         Setup();
  61.     }
  62.  
  63.     private void Update()
  64.     {
  65.         if (Input.GetKeyDown(KeyCode.Space))
  66.         {
  67.             Create();
  68.         }
  69.  
  70.         // if (Input.GetKeyDown(KeyCode.A))
  71.         // {
  72.         //     Return(_activeObjects.Dequeue());
  73.         // }
  74.     }
  75. }
  76.  
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement