๋งˆ์šฐ์Šค๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ”ผ๋ฆฌํŒน์ด ์ƒ๊ฒจ์„œ 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;

ย  ย  ย  ย  }

ย  ย  }