๐ ๋น ๋ฅธ ์์
๐ ๊ฐ์โ
์ด ์ ๋ฌธ์ฉ ์ฌ์ ํ๋ก์ ํธ์์ Game Event System์ ํ์ฑํํ๋ ๋ฐ ํ์ํ ์ผํ์ฑ ์ค์ ๊ณผ์ ์ ์๋ดํฉ๋๋ค. ๋ฐ๋ชจ๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ดํด๋ณด๊ธฐ ์ ์ ํต์ฌ ํ๋ ์์ํฌ ์ปดํฌ๋ํธ๋ฅผ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.
- Game Event System ๋์๋ณด๋๋ฅผ ์ฌ๋ ๋ฐฉ๋ฒ
- ํด๋ฆญ ํ ๋ฒ์ผ๋ก ์์คํ ์ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ
- ์ค์ ๊ณผ์ ์์ ์์ฑ๋๋ ์ปดํฌ๋ํธ ํ์ธ
๐ฌ ๋ฐ๋ชจ ์ฌโ
Assets/TinyGiants/GameEventSystem/Demo/00_QuickStart/00_QuickStart.unity
์ด๊ธฐํ ํ๋ก์ธ์ค๋ฅผ ์์ํ๋ ค๋ฉด ์ด ์ฌ์ ์ฌ์ญ์์ค.
๐ค ์ ์ด๊ธฐํ๊ฐ ํ์ํ๊ฐ์?โ
Game Event System์ ๋ชจ๋ ์ด๋ฒคํธ ์์
์ ์กฐ์ ํ๊ธฐ ์ํด **์์ฃผ ๋งค๋์ (persistent manager)**์ธ GameEventManager์ ์์กดํฉ๋๋ค. ์ด ๋งค๋์ ๊ฐ ์์ผ๋ฉด ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ฑฐ๋ ๋ฆฌ์ค๋ํ ์ ์์ต๋๋ค.
์ด๊ธฐํ ํ๋ก์ธ์ค๋ ๋ค์ ํญ๋ชฉ๋ค์ ์๋์ผ๋ก ์ค์ ํฉ๋๋ค:
| ์ปดํฌ๋ํธ | ์ค๋ช |
|---|---|
| ๐ฎ GameEventManager | ์ฑ๊ธํค ๋งค๋์ (DontDestroyOnLoad๋ก ํ์๋จ) |
| ๐ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค | ์ด๋ฒคํธ ์ ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์์ |
| ๐ ํ๋ก์ฐ ์ปจํ ์ด๋ | ์ด๋ฒคํธ ์ค์ผ์คํธ๋ ์ด์ ์ ์ํ ์๊ฐ์ ๋ก์ง ๊ทธ๋ํ |
| โ๏ธ ์์ฑ๋ ์ฝ๋ | ๋ด์ฅ ์ด๋ฒคํธ ํ์ (void, int, float ๋ฑ)์ ์ํ C# ํด๋์ค |
๐ ๋จ๊ณ๋ณ ์ค์ ์ง์นจโ
1๏ธโฃ ๋์๋ณด๋ ์ด๊ธฐโ
์ ๋ํฐ ์๋จ ๋ฉ๋ด์์ ๋ค์ ๊ฒฝ๋ก๋ก ์ด๋ํ์ญ์์ค:
Tools โ TinyGiants โ Game Event System
๊ทธ๋ฌ๋ฉด ์ด๋ฒคํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ๋ก์ฐ ๊ทธ๋ํ๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ ํ๋ธ์ธ Game Event System ์ฐฝ์ด ์ด๋ฆฝ๋๋ค.
2๏ธโฃ ์์คํ ์ํ ํ์ธโ
์ฐฝ์์ "Initialize System" ์น์ ์ ์ฐพ์ผ์ญ์์ค:
๐ต ์ด๊ธฐํ ์ โ

- ํ๋์ "Initialize Event System" ๋ฒํผ์ด ๋ณด์ ๋๋ค.
- โ ๏ธ ๊ฒฝ๊ณ : "Please initialize the system first (์์คํ ์ ๋จผ์ ์ด๊ธฐํํ์ญ์์ค)"
๐ข ์ด๊ธฐํ ํโ

- ์ํ ๋ฐ๊ฐ ๋ น์์ผ๋ก ๋ณํ๋ฉฐ "โ System Initialized"๋ผ๊ณ ํ์๋ฉ๋๋ค.
- โ ํ์ธ: "Core managers, database and codes are ready (ํต์ฌ ๋งค๋์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์ฝ๋๊ฐ ์ค๋น๋์์ต๋๋ค)"
3๏ธโฃ ์ด๊ธฐํ ํด๋ฆญโ
"Initialize Event System" ๋ฒํผ์ ๋๋ฅด์ญ์์ค. ํ๋ฌ๊ทธ์ธ์ด ์๋์ผ๋ก ๋ค์ ์์ ์ ์ํํฉ๋๋ค:
| ์์ | ๊ฒฐ๊ณผ |
|---|---|
| ๋งค๋์ ์์ฑ | ์ฌ์ GameEventManager ๊ฒ์ ์ค๋ธ์ ํธ ์ถ๊ฐ (์์ฃผํ) |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ | ํ๋ก์ ํธ์ DefaultEventDatabase.asset ์์ฑ |
| ํ๋ก์ฐ ๊ทธ๋ํ ์ค์ | ์๊ฐ์ ๋ก์ง์ ์ํ DefaultFlowContainer.asset ์์ฑ |
| ์ฝ๋ ์ปดํ์ผ | ํ์ ์์ ์ฑ์ด ๋ณด์ฅ๋ C# ์ด๋ฒคํธ ํด๋์ค ์์ฑ |
์ฝ์์ ๐ GameEvent initialization complete ๋ฌธ๊ตฌ๊ฐ ํ์๋ฉ๋๋ค.
โ ์ค์ ํ์ธโ
์ด๊ธฐํ๊ฐ ์๋ฃ๋๋ฉด ์ค์ ์ ํ์ธํ์ญ์์ค:
-
ํ์ด์ด๋ผํค ํ์ธ ๐
๋ฃจํธ ๋ ๋ฒจ์
GameEventManager๊ฒ์ ์ค๋ธ์ ํธ๊ฐ ๋ํ๋์ผ ํฉ๋๋ค. -
์ธ์คํํฐ ํ์ธ ๐
๋งค๋์ ๋ฅผ ์ ํํ์ฌ ํ ๋น๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database)์ ํ๋ก์ฐ ์ปจํ ์ด๋(Flow Container) ์ฐธ์กฐ๋ฅผ ํ์ธํ์ญ์์ค.
-
์ฝ์ ํ์ธ ๐
์ด๊ธฐํ ์ฑ๊ณต์ ํ์ธํ๋ ๋ฉ์์ง๋ฅผ ์ฐพ์ผ์ญ์์ค.

๊ฐ ์ฌ์ด ์ ์ ์๋ํ๋ ค๋ฉด ์์ฒด์ ์ธ GameEventManager๊ฐ ํ์ํฉ๋๋ค. ๋งค๋์ ๋ ํด๋น ์ฌ์์ ์ด๋ค ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ก์ฐ ๊ทธ๋ํ๊ฐ ํ์ฑํ๋ ์ง ๊ฒฐ์ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด(ScriptableObject ์์ )๋ ์๊ตฌ์ ์ด๋ฉฐ ์ฌ๋ฌ ์ฌ์์ ์ฌ์ฌ์ฉํ ์ ์์ง๋ง, ๊ฐ ์ฌ์ ์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ง ๋ช ์์ ์ผ๋ก ๋ฐ์ธ๋ฉํด์ผ ํฉ๋๋ค.
๐ฏ ๋ค์ ๋จ๊ณ๋?โ
ํ๊ฒฝ์ด ์ค๋น๋์์ผ๋ฏ๋ก ์ด์ ํ๋ ์์ํฌ์ ํต์ฌ ๊ธฐ๋ฅ์ ํ์ํ ์ ์์ต๋๋ค.
๋ค์ ์ฅ: **01 Void ์ด๋ฒคํธ**์์ ์ฒซ ๋ฒ์งธ ์ด๋ฒคํธ๋ฅผ ์์ฑํ๊ณ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด์ญ์์ค.
์ด๊ธฐํ ํ๋ก์ธ์ค ๋ฐ ์๋ ์ค์ ์ต์ ์ ๋ํ ๊ธฐ์ ์ ์์ธ ๋ด์ฉ์ **์ค์น ๊ฐ์ด๋**๋ฅผ ์ฐธ์กฐํ์ญ์์ค.