diff --git "a/\354\265\234\354\242\205\354\240\234\354\266\234\353\254\274/NumberPool.cs" "b/\354\265\234\354\242\205\354\240\234\354\266\234\353\254\274/NumberPool.cs" new file mode 100644 index 0000000000000000000000000000000000000000..e7f4835c6d6919c42b89448d9776ff29d87ea52a --- /dev/null +++ "b/\354\265\234\354\242\205\354\240\234\354\266\234\353\254\274/NumberPool.cs" @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class NumberPool : MonoBehaviour +{ + public static NumberPool Instance + { + get + { + if (_instance == null) _instance = FindObjectOfType<NumberPool>(); + return _instance; + } + } + + private static NumberPool _instance; + + [SerializeField] List<GameObject> pooledNumbers = new List<GameObject>(); + + public GameObject GetPooledObject(int numberToGet, Transform targetNode, bool wantActive) + { + for (int i = 0; i < pooledNumbers.Count; i++) + { + GameObject currentNumber = pooledNumbers[i]; + + if (currentNumber.name.Equals(numberToGet.ToString()) && !currentNumber.GetComponent<Number>().isUsing) + { + currentNumber.GetComponent<Number>().isUsing = true; + currentNumber.SetActive(wantActive); + currentNumber.transform.SetParent(targetNode); + currentNumber.transform.localScale = Vector3.one; + currentNumber.transform.localPosition = Vector3.zero; + return currentNumber; + } + } + + GameObject newBlock = Instantiate(Resources.Load("Nodes/" + numberToGet.ToString()), targetNode) as GameObject; + newBlock.name = numberToGet.ToString(); + pooledNumbers.Add(newBlock); + return newBlock; + } + + public void SetPooledObject(Transform numberToPool) + { + numberToPool.GetComponent<Number>().isUsing = false; + numberToPool.gameObject.SetActive(false); + numberToPool.SetParent(transform); + } +}