public GameObject GetPooledObject(poolEntity p) { //1 int type = (int)p; //setActive(pool [type].obj (i),true); GameObject go = pool[type].pop(); if (go != null) { return(go); } //3 if (pool[type].willGrow) { GameObject obj = Instantiate(pool[type].pooledObject); //setActive(obj,true); pool[type].add(obj); obj = pool[type].pop(obj); return(obj); } return(null); }
/* * public GameObject GetPooledObject(poolEntity p, Vector3 position, Quaternion rotation, GameObject parent = null) { * //1 * int type = (int) p; * for (int i = 0; i < pool[type].count(); i++) { * //2 * if (!pool[type].active(i)) { * //setActive(pool [type].obj (i),true); * pool[type].obj(i).transform.position = position; * pool[type].obj(i).transform.rotation = rotation; * if (parent != null) * pool[type].obj(i).transform.SetParent(parent.transform); * return pool[type].obj(i); * } * } * //3 * if (pool[type].willGrow) { * GameObject obj = (GameObject)Instantiate (pool[type].pooledObject); * //setActive(obj,true); * pool[type].add (obj); * obj.transform.position = position; * obj.transform.rotation = rotation; * if (parent != null) * obj.transform.SetParent(parent.transform); * return obj; * } * * return null; * } * * public GameObject GetPooledObject(poolEntity p) * { * //1 * int type = (int)p; * //Debug.Log(string.Format("type {0}", type)); * for (int i = 0; i < pool[type].count(); i++) * { * //2 * if (!pool[type].active(i)) * { * //setActive(pool [type].obj (i),true); * pool[type].obj(i).transform.position = new Vector3(); * pool[type].obj(i).transform.rotation = new Quaternion(); * return pool[type].obj(i); * } * } * //3 * if (pool[type].willGrow) * { * GameObject obj = (GameObject)Instantiate(pool[type].pooledObject); * //setActive(obj,true); * obj.transform.position = new Vector3(); * obj.transform.rotation = new Quaternion(); * pool[type].add(obj); * return obj; * } * * return null; * } * */ public GameObject GetPooledObject(poolEntity p, Vector3 position, Quaternion?rotation = null, GameObject parent = null) { //1 int type = (int)p; //setActive(pool [type].obj (i),true); GameObject go = pool[type].pop(); if (go != null) { go.transform.position = position; if (rotation != null) { go.transform.rotation = rotation.Value; } if (parent != null) { go.transform.SetParent(parent.transform); } return(go); } //3 if (pool[type].willGrow) { GameObject obj = (GameObject)Instantiate(pool[type].pooledObject); //setActive(obj,true); pool[type].add(obj); obj = pool[type].pop(obj); obj.transform.position = position; if (rotation != null) { obj.transform.rotation = rotation.Value; } if (parent != null) { obj.transform.SetParent(parent.transform); } return(obj); } return(null); }