๐ Object Pooling์ผ๋ก ๊ฒ์ ์ต์ ํ – ํฌ์ฌ์ฒด์ ์ AI ์ฑ๋ฅ ์ ์งํ๊ธฐ
๊ฒ์์์ ์ด์, ํญ๋ฐ, ์ ์บ๋ฆญํฐ ๊ฐ์ ์ค๋ธ์ ํธ๋ฅผ ๊ณ์ ์์ฑํ๊ณ ์ ๊ฑฐํ๋ฉด,
CPU์ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ด์ด ์๊ฒจ **ํ๋ ์ ๋๋กญ(Frame Drop)**์ด๋ ๋๊น ํ์์ด ๋ฐ์ํ ์ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํต์ฌ ๊ธฐ์ ์ด ๋ฐ๋ก Object Pooling์ด๋ค.
1. Object Pooling ๊ฐ๋
-
๋ฏธ๋ฆฌ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํด๋๊ณ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์
-
์์ฑ(Create)๊ณผ ์ญ์ (Destroy)๋ฅผ ์ต์ํ → ์ฑ๋ฅ ํฅ์
-
์ผ๋ฐ์ ์ผ๋ก ํฌ์ฌ์ฒด, ํํฐํด, ์ ์บ๋ฆญํฐ ๋ฑ ๋ฐ๋ณต ์ฌ์ฉ ์ค๋ธ์ ํธ์ ์ ์ฉ
2. Unity ์์
-
ํ์ฉ: ๋ฐ์ฌ ์
GetBullet()
ํธ์ถ → ์ฌ์ฉ ํSetActive(false)
-
Destroy/Instantiate ๋ฐ๋ณต ๋ฐฉ์ง → ์ฑ๋ฅ ์์ ํ
3. Object Pooling ์ฅ์
-
ํ๋ ์ ์์ ์ฑ: Instantiate/Destroy๋ก ์ธํ GC(๊ฐ๋น์ง ์ปฌ๋ ์ ) ๋ถ๋ด ๊ฐ์
-
์ฑ๋ฅ ์ต์ ํ: ๋ค์ ํฌ์ฌ์ฒด, ํํฐํด, ์ NPC ์ฒ๋ฆฌ ๊ฐ๋ฅ
-
์ ์ง๋ณด์ ์ฉ์ด: ์ฝ๋ ๊ตฌ์กฐ ๊น๋
4. ํ์ฉ ํ
-
Pool ํฌ๊ธฐ ์กฐ์ : ์์ ์ต๋ ์ค๋ธ์ ํธ ์ ๊ธฐ์ค
-
๋์ ํ์ฅ: ํ ๋ถ์กฑ ์ Instantiate ๊ฐ๋ฅ
-
์ฌ์ฌ์ฉ ์ ์ด๊ธฐํ ํ์: ์์น, ์๋, ์ํ ์ด๊ธฐํ
5. ๋ง๋ฌด๋ฆฌ
Object Pooling์ ๊ฒ์ ์ฑ๋ฅ ์ต์ ํ์ ๊ธฐ๋ณธ์ด์ ํ์ ๊ธฐ์ ์ด๋ค.
-
FPS ์ ์ง
-
๋๊น ์๋ ํ๋ ์ด ๊ฒฝํ ์ ๊ณต
-
๋ค์ ์ค๋ธ์ ํธ ๋์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๐ ๋ค์ ๊ธ์์๋ ์ฌ(Scene) ๊ด๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ๋ค๋ค, ์ค๋ธ์ ํธ ํ๋ง๊ณผ ํจ๊ป ๊ฒ์ ์ ์ฒด ์ฑ๋ฅ์ ์์ ์ ์ผ๋ก ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
๋๊ธ
๋๊ธ ์ฐ๊ธฐ