๐ ์ฌ ๊ด๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ – ๊ฒ์ ์ฑ๋ฅ ์์ ํ ์ ๋ต
๊ฒ์์์ ํ ์ฌ(Scene) ์์ ๋๋ฌด ๋ง์ ์ค๋ธ์ ํธ๊ฐ ์๊ฑฐ๋, ์ฌ๋ฌ ์ฌ์ ์์ฃผ ์ ํํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ์ ํ๋ ์ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ด๋ฒ ๊ธ์์๋ ์ฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ์ ๋ต์ Unity ์ค์ฌ์ผ๋ก ์ดํด๋ณด๊ฒ ๋ค.
1. ์ฌ(Scene) ๊ด๋ฆฌ๋?
-
์ฌ(Scene): ๊ฒ์์ ํ ํ๋ฉด, ๋ ๋ฒจ, ํ๊ฒฝ ๋จ์๋ฅผ ์๋ฏธ
-
์ฌ ์ ํ ์ ๊ธฐ์กด ์ฌ์ ์ค๋ธ์ ํธ๋ฅผ ์ ๋ฆฌํ๊ณ ์๋ก์ด ์ฌ ๋ก๋
-
์๋ชป๋ ์ฌ ๊ด๋ฆฌ → ๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak) ๋ฐ์ ๊ฐ๋ฅ
2. ์ฌ ์ ํ ๋ฐฉ๋ฒ
-
๋จ์ผ ์ฌ ์ ํ
-
๊ธฐ์กด ์ฌ ์ญ์ ํ ์ ์ฌ ๋ก๋
-
์ฅ์ : ๋ฉ๋ชจ๋ฆฌ ์ด๊ธฐํ
-
๋จ์ : ์ ํ ์ ๋ก๋ฉ ์๊ฐ ๋ฐ์
-
๋ฉํฐ ์ฌ ๋ก๋ฉ(Additive)
-
์ฌ๋ฌ ์ฌ์ ๋์์ ์ ์ง ๊ฐ๋ฅ
-
์ฅ์ : UI, ๋ฐฐ๊ฒฝ, ๋ ๋ฒจ ์ฌ ๋ถ๋ฆฌ → ์ ์ฐํ ๊ด๋ฆฌ
-
๋จ์ : ๋ถํ์ํ ์ค๋ธ์ ํธ ์ ์ง ์ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ
3. ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ์ ๋ต
-
๋ถํ์ํ ์ค๋ธ์ ํธ ์ ๊ฑฐ: ์ฌ ์ ํ ์ ์ฌ์ฉ ์ ํ๋ ์ค๋ธ์ ํธ Destroy
-
Resources.Load ์ต์ํ: ๋ฏธ๋ฆฌ ๋ก๋ ๋๋ AssetBundle ์ฌ์ฉ
-
Object Pooling ํ์ฉ: ์์ฃผ ์ฌ์ฉํ๋ ์ค๋ธ์ ํธ ์ฌ์ฌ์ฉ → Instantiate/Destroy ๊ฐ์
4. ์ค์ ํ
-
์ฌ ๋ก๋ฉ ์ค Async ๋ฐฉ์ ํ์ฉ → ๋ก๋ฉ ํ๋ฉด + ๋๊น ๋ฐฉ์ง
-
์ฌ ๊ตฌ์กฐ ์ค๊ณ: UI, ๋ฐฐ๊ฒฝ, ๊ฒ์ํ๋ ์ด ์ฌ ๋ถ๋ฆฌ → ๊ด๋ฆฌ ์ฉ์ด
-
๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ํฐ๋ง: Profiler ์ฌ์ฉ → ๋์, ๊ณผ๋ค ์ฌ์ฉ ์ฒดํฌ
5. ๋ง๋ฌด๋ฆฌ
์ฌ ๊ด๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ ๊ฒ์ ์ฑ๋ฅ ์์ ํ์ ํ์ ๋จ๊ณ์ด๋ค.
-
์ ์ ํ ์ฌ ๋ถ๋ฆฌ → ์ฝ๋ ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์ ↑
-
๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ฑฐ → FPS ์์ ํ
-
Object Pooling + Async ๋ก๋ฉ → ๋๊ท๋ชจ ์ฌ๋ ๋ถ๋๋ฝ๊ฒ ์คํ
๐ ๋ค์ ๊ธ์์๋ RPC(Remote Procedure Call)์ ๋คํธ์ํฌ ๊ฒ์ ๊ธฐ์ด๋ฅผ ๋ค๋ค, ๋ฉํฐํ๋ ์ด์ด ํ๊ฒฝ์์๋ ์์ ์ ์ธ ๊ฒ์ ๋์์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
๋๊ธ
๋๊ธ ์ฐ๊ธฐ