์ค๋ธ์ ํธ ํ๋ง ์ฐ์ต์ค์ธ๋ฐ ์ด๋ฒ์ ํ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง ์ค๋ธ์ ํธ๋ฅผ ๋๋ค์ผ๋ก ๋ฝ๋ ํ๋ง์ ๊ตฌํํ๋ ค๊ณ ํ๊ฑฐ๋
๊ทผ๋ฐ ๊ฐ์ด ์์กํ์ ๊ตฌ๊ธ์์ ๊ธ์ด์๋๋ฐ ๋ญ๊ฐ ์ด์ํ๊ฒ ์๋ํด์...
๋๋ ํด์์ด ์๋๋คใ ใ
public class objectPoolScript : MonoBehaviour
{
ย ย public GameObject[] robotParts;
ย ย public bool willGrow = true;
ย ย public List[] pooledObjects;
ย ย public GameObject GetPooledObject()
ย ย {
ย ย ย ย int randomIndex = Random.Range(0, pooledObjects.Length);
ย ย ย ย ย
ย ย ย ย if (willGrow)
ย ย ย ย {
ย ย ย ย ย ย GameObject obj = (GameObject)Instantiate(robotParts[randomIndex]);
ย ย ย ย ย ย pooledObjects[randomIndex].Add(obj);
ย ย ย ย ย ย return obj;
ย ย ย ย }
ย ย ย ย return null;
ย ย }
ย ย void Start()
ย ย {
ย ย ย ย pooledObjects = new List[robotParts.Length];
ย ย ย ย for (int i = 0; i
ย ย ย ย {
ย ย ย ย ย ย for (int j = 0; j
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย GameObject obj = (GameObject)Instantiate(robotParts[i]);
ย ย ย ย ย ย ย ย obj.SetActive(false);
ย ย ย ย ย ย ย ย pooledObjects[i] = new List();
ย ย ย ย ย ย }
ย ย ย ย }
ย ย ย ย StartCoroutine(countTime());
ย ย }
ย ย IEnumerator countTime()
ย ย {
ย ย ย ย yield return new WaitForSeconds(3);
ย ย ย ย GetPooledObject().transform.position = new Vector3(23, 2.5f, 0);
ย ย ย ย StartCoroutine(countTime());
ย ย }
}
์ด๋ ๊ฒ ํด๋๊ณ ๋ฆฌ์คํธ ํฌ๊ธฐ๋ฅผ ๋ค์ฏ๊ฐ๋ก ์ค์ ํ๊ฑฐ๋
๊ทธ๋ผ 3์ด๋ง๋ค ๋ค์ฏ๊ฐ ์ค ํ๋๊ฐ ๋๋ค์ผ๋ก 23, 2.5, 0์ ์์ฑ๋๊ธดํ๋๋ฐ
์๊ฐ ๋ฏธ๋ฆฌ ์์ฑํด๋์ 7๊ฐ์ง๋ฆฌ ๋ฆฌ์คํธ์์ ๊ฐ์ ธ์ค๋๊ฒ ์๋๋ผ ๊ทธ๋ฅ ๊ทธ๋๊ทธ๋ ์์ฑํด์ ์ฐ๋๋ผ๊ณ
๋ง์ง๋ง์ GetPooledObject().transform.position์ด ์๋ชป๋๊ฑฐ๊ฐ๊ธดํ๋ฐ
์ ๋ฐ๊ฐ ๋ญ๋ฅผ ๋ฃ์ด๋ด๋ ๊ตฌํ์ด ์ ์๋ผ์...
๊ฐ์พ์ ์ค์์ ๊ตฌ์ ํด์คใ ใ
enQue deQue ์ด๋๊ฐ๋
๊ทธ๊ฑด ๋ ๋ชจ์ผ...์๊พธ ์๋ก์ด ๊ฐ๋ ์ด ๋์ค๋ค ์ฐจ์๋ณด๊ณ ์ฌ๊ฒ
ํ๋ผ๋ ์์์ ์ด์๋ค์ Instantiate(์์ฑ)ํด์ ๋ด๊ณ (EnQueue) ํ์ํ ๋ ๊บผ๋ด์(DeQueue) ์ฐ๋๊ฑฐ์
๋ฆฌ์คํธ ๋์ ์ ์ฐ๋๊ฑฐ๊ฐ์๋ฐ ๋ง์?
๋ฆฌ์คํธ ์ผ๊ตฌ๋ ๋ฆฌ์คํธ๋ก ํ๋? ์๋ ํ๋ง์ ํ๋ก FIFO(์ ์ ์ ์ถ) ํ๋๊ฒ ์์น์ผํ ๋ฐ? ๋ฆฌ์คํธ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ๋๋ฐ ํ๋กํ๋๊ฒ ํธํ ๊ฑฐ์ฌ ๊ทธ ๋ฌธ๋ฐฉ๊ตฌ ์์ ๋์ ๋ฃ์ผ๋ฉด ์บก์๋์ค๋ ๊ธฐ๊ณ์์๋ ๊ทธ๋ฐ ๋ฐฉ์์ด ํ์ ์์์ ์บก์ ๋ฃ์ผ๋ฉด ๋ฃ์ ์์๋ก ๋์ค๋๊ฑฐ. ๊ทธ๊ฒ ์ ์ ์ ์ถ์ด๊ณ
์์ผ...๊ทธ๋ฌ๋ฉด ๊ฐ์์์ด์ผ๊ฒ ๋ค ์ฐจ์๋ณผ๊ฒ ๊ณ ๋ง์ด!
๊ฒ๋ง์๊ณ ์์ฑ ๋ฐ๋ฉ ๋ฉ์๋๋ ์ด๋๊ฐ๋ ธ - dc App
์ผ๋จ ํฐํ๊ฒ์ด๋ฐ์ผ๋ฃจ๋ค๊ฐ ํด๊ฒฐ์ ํ๋๋ฐ ํ๊ฐ ์ดํด๊ฐ ์๋๋น...๊ณต๋ถํด๋ด์ผ๊ฒ์จ ์ํผ ๊ณ ๋ง์ด!
ํ๋ง์ ๊ธฐ๋ณธ์ ์ผ๋ก 4๊ฐ์ง ์ ๋๋ฅผ ๊ตฌํํ๋ฉด ๋ฉ๋๋ค. 1. ๊ฐ์ฒด ๋ฆฌํํด์ฃผ๊ธฐ. 2. ๊ฐ์ฒด ๋ฐ์์ค๊ธฐ(Dequeue) 3. ๊ฐ์ฒด ๋ฃ์ด์ฃผ๊ธฐ(Enqueue) 4. ๊ฐ์ฒด ๋ฆฌ์ ํด์ฃผ๊ธฐ
๋ฆฌํํด์ฃผ๋๊ฑด ์ผ๋จ ๊ฐ์ฒด๊ฐ ์์ด์ผ ํ๋๊ฑฐ๋๊น ๋น์ฐํ๊ฑฐ๊ณ ์ฝ์ง์. ๊ฐ์ฒด ๋ฐ์์ค๊ธฐ๋ ๊ทธ๋ฅ ํ๋ง Queue์๋ค๊ฐ dequeue๋ง ํด์ฃผ๋ฉด ๋๋ ์ฝ์ต๋๋ค. ๋ฌธ์ ๋ ๋ฆฌ์ ์ด์ฃ . ๋ฆฌ์ ํ ๋์ ์ฐธ์กฐํ๋๊ฒ ๋ค๋ฅธ ๊ณณ์์ ๋ฐ์ดํฐ๋ก ์ฐ์ด๋ค๊ฐ ์์ ๋๊ฑฐ๋, ๋ฆฌ์ ํญ๋ชฉ์์ ๋๋ฝ๋๊ฑฐ๋ ๋ฑ๋ฑ๋ฑ์ ์ด์ ๋ก ๋ค์ ์ธ๋์ ๋ฌธ์ ๊ฐ ๋๊ณค ํฉ๋๋ค. ๊ทธ๊ฒ๋ง ์กฐ์ฌํ๋ฉด ํ๋ง ์์ฒด๋ ์ฌ์์
์์ ์์ธํ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋น ๋ฆ๊ฒ๋ดค๋ค ์ผ๋จ ๊ตฌํ ์ฑ๊ณตํด๊ฐ์ง๊ณ ์ฝ๋ ์ฐฌ์ฐฌํ ๋ฏ์ด๋ณด๋ฉด์ ๊ณต๋ถํด๋ณผ๋ผ๊ตฌ ๊ณ ๋ง์ด!