๋ง์ฐ์ค๋ฅผ ๋๋ฅด๋ฉด ํผ๋ฆฌํน์ด ์๊ฒจ์ 3์ด๋์ ์๋ก ์์ง์ด๊ณ ์ฌ๋ผ์ง๋ ์ฝ๋๋ฅผ ๋ง๋ค์๋๋ฐ ๊ฐ๋์ฉ ํ๋ฆฌํน์ด ์์์ด์ ธ์
ํ๋ฆฌํน์ ์๋ ์คํฌ๋ฆฝํธ
ย void Start()
ย ย {
ย ย ย ย Invoke("set", 3f);
ย ย }
ย ย public void set()
ย ย {
ย ย ย ย pooling.InsertQueue(this.gameObject);
ย ย }
ย ย // Update is called once per frame
ย ย void Update()
ย ย {
ย ย ย ย gameObject.transform.position = gameObject.transform.position + new Vector3(0, 1 * Time.deltaTime, 0);
ย ย }
ํ์์ ํ๋ฆฌํน ๋นผ์ค๋ ์คํฌ๋ฆฝํธ
ย ย void Start()
ย ย {
ย ย ย ย ย
ย ย }
ย ย // Update is called once per frame
ย ย void Update()
ย ย {
ย ย ย ย if (Input.anyKeyDown)
ย ย ย ย {
ย ย ย ย ย ย var obj = pooling.GetQueue();
ย ย ย ย ย ย obj.transform.position = new Vector3(1,4,7);
ย ย ย ย ย ย ย
ย ย ย ย }
ย ย }
ํ๋ง ํ์ ์ค๋ธ์ ํธ ๋ฃ๊ณ ๋นผ๋ ํจ์
public static void InsertQueue(GameObject p_object) // ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ Pool(ํ)์ ๋ฐ๋ฉ์ํค๋ ํจ์
ย ย {
ย ย ย ย m_queue.Enqueue(p_object);
ย ย ย ย p_object.SetActive(false);
ย ย }
ย ย public static GameObject GetQueue()//ํ์์ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ ํจ์
ย ย {
ย ย ย ย if (m_queue.Count>0)//ํ์ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ํ์์ ๊บผ๋ด์ด
ย ย ย ย {
ย ย ย ย ย ย GameObject t_object = m_queue.Dequeue();
ย ย ย ย ย ย t_object.SetActive(true);
ย ย ย ย ย ย return t_object;
ย ย ย ย }
ย ย ย ย else//์๋๋ฉด ์๋ก ๋ง๋ฌ
ย ย ย ย {
ย ย ย ย ย ย var newobj = instance.makeObj();
ย ย ย ย ย ย newobj.SetActive(true);
ย ย ย ย ย ย return newobj;
ย ย ย ย }
ย ย }
๋๋ฒ๊ทธ๋ก๊ทธ ๋ฐ๊ณ ์ด๋์ ์ํฐ์ง๋์ง ํ์ธํ๋
๊ฐ๋ ๊ทธ๋ฌ๋๊ฑฐ ๋ง๋? ์คํํธ์์ ์ธ๋ณดํฌ ํ๋๊ฑฐ ๋ณด๋ฉด ์๋ก ์์ฑ๋ ์ ๋ค๋ง ํ๋ฒ ์๋ํ ๊ฑฐ๊ฐ์๋ฐ?