public GameObject AddNewObject(ObjectEnums name) { if (name == ObjectEnums.SmallBallStack) { GameObject newGO = GameObject.Instantiate(SmallBallStack, Camera.main.transform.position, Quaternion.identity); newGO.gameObject.SetActive(false); GameObject.DontDestroyOnLoad(newGO); _objectsPool[name].Add(newGO); return(newGO); } else if (name == ObjectEnums.BigBallLine) { GameObject newGO = GameObject.Instantiate(BigBallLine, Camera.main.transform.position, Quaternion.identity); newGO.gameObject.SetActive(false); GameObject.DontDestroyOnLoad(newGO); _objectsPool[name].Add(newGO); return(newGO); } else if (name == ObjectEnums.BigCube) { GameObject newGO = GameObject.Instantiate(BigCube, Camera.main.transform.position, Quaternion.identity); newGO.gameObject.SetActive(false); GameObject.DontDestroyOnLoad(newGO); _objectsPool[name].Add(newGO); float randomColorCube = UnityEngine.Random.value; if (randomColorCube < 0.3) { newGO.tag = "Red"; } else if (randomColorCube > 0.3 && randomColorCube < 0.6) { newGO.tag = "Green"; } else { newGO.tag = "Black"; } return(newGO); } else { GameObject newGO = GameObject.Instantiate(CylinderStack, Camera.main.transform.position, Quaternion.identity); newGO.gameObject.SetActive(false); GameObject.DontDestroyOnLoad(newGO); _objectsPool[name].Add(newGO); return(newGO); } }
public GameObject GetObjectForScene(ObjectEnums name) { if (_objectsPool[name].Count == 0) { _objectsPool[name].Add(AddNewObject(name)); } if (_objectsPool[name].Count > 0) { GameObject goForScene = _objectsPool[name][_objectsPool[name].Count - 1]; _objectsPool[name].RemoveAt(_objectsPool[name].Count - 1); return(goForScene); } return(null); }