์๋ ์ ์ฑ๊ธํค์ ์ฐ๋ฉด ์๋๋๊น ์ ๋ํฐ๋ ์คํ๋ง ์ฒ๋ผ
di๋ฃ์๋ ค๊ณ ๋ณ ์ง ๋คํ๋๋ฐ
์ ์ด์ ๋ ํ๋ ์์ํฌ๊ฐ ์ถ๊ตฌํ๋ ์์กด์ฃผ์
๋ฐฉ์์ด ๋ค๋ฆ
์คํ๋ง์ di ์์ฒด๊ฐ ๋งค์ฐ ํธํ๋ฐ ์ฌ์ค์ ์ด๊ฒ๋ ๋ด๋ถ ์์ค ๊น๋ณด๋ฉด ์ฑ๊ธํค ํจํด์ด๊ณ
๊ทธ๋ผ ์ ๋ํฐ์์ ์ถ๊ตฌํ๋ ์์กด์ฑ ์ฃผ์
์ ๊ทธ๋ฅ ์ธ์คํํฐ์
๋ฃ๋ ๋ฐฉ์์ ์ถ์ฒํ๋๋ฐ ๋์ ์ผ๋ก ์์ฑ๋๋ ๊ฒ์ ์์ด
์ด ๋ฐฉ๋ฒ์ ์๋จนํ
๋ ์ปดํฌ๋ํธ ํจํด์ด ์ฃผ๋ค ๋ณด๋ ์ ์ด์ ๊ฐ์ ๊ฐ์ฒด ๋ด์ ์ปดํฌ๋ํธ ์ ๊ทผ์ GetComponent๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํจ
์ฆ ์ ๋ฆฌํ์๋ฉด
๊ฐ์ ํ๋ฆฌํน ๋๋ ์ฌ์ ๋ฐฐ์น๋ ๊ฒ์ ์ธ์คํํฐ์ ๋ฐ๊ณ
๋์ ์์ฑ์ ํ๋๋ฐ ๊ฐ์ ๊ฐ์ฒด์์ ์๋คํ๋ฉด GetComponet๋ก ๋ฐ๊ณ
๋์ ์์ฑ๋ ํ๊ณ ๊ฐ์ ํ๋ฆฌํน์๋ ์๋ค ํ๋ฉด
์ฑ๊ธํค ์จ์ฃผ๊ณ ์์
๋ ๋ฐ์ดํฐ ๋ถ๋ถ ์๋ฅผ๋ค์ด ๋์ด๋, ์ ์ ์ ์ฒด๋ ฅ ๋ถ๋ถ์
์ฐธ์กฐํด์ผํ๋ฉด ์ด๊ฑธ ์ฑ๊ธํค์ผ๋ก ๋นผ๋ ๋๊ธดํ๋๋ฐ
์ฐธ์กฐํ๋ ๋์์ด ๋ง์ผ๋ฉด ๊ทธ๋ฅ ๋ฆฌ์ค๋ ๋ฌ๊ณ sub-pub ํํ๋ก ๊ตฌํํ๋ ํธ์
๋ฌผ๋ก 3๋
๋์ ์น์์ ๊ตฌ๋ฅด๊ณ ๋
ํ์ผ๋ก๋ง ์ ๋ํฐ ํ๋ค๋ณด๋ ์ ๋ต์ด ์๋ ์ ์์ผ๋ ๋ ์ข์ ๋ฐฉ๋ฒ์์ผ๋ฉด ๋๊ธ ๋ถํํจ
- dc official App
์์กด์ฑ์ผ๋ก ๋ง๋ค๋ค๋ณด๋ฉด ์์กด์ฑ ์ฃผ์ ํ๋ ๊ฐ์ฒด๋ค๋ผ๋ฆฌ ์ฐธ์กฐ ์์ ์๋ง์ถ๋ฉด ์ํ์ฐธ์กฐ ์์ฃผ ์ผ์ด๋๋๋ฐ ์ด๊ฑฐ ์ด์ผ ํด๊ฒฐํ๋ ๋ ์ด๊ฒ ์ ค ๋ฌธ์ ๊ฐ์๋ฐ
์ํ์ฐธ์กฐ ๋ฌธ์ ๋ ์ํ์ฐธ์กฐ๋๋ ๊ฐ์ฒด๋ผ๋ฆฌ ๋ฌถ๋ ํ๋์ ํด๋์ค๋ฅผ ๋ฐ๋ก ๋ง๋๋๊ฑธ ์ถ์ฒํจ ๊ทธ๋์ ํด๋น ํด๋์ค์์ ๋จผ์ ์ฐธ์กฐ๋๋ ๋ ํด๋์ค๋ฅผ ์์ฑํ๊ณ ์ํ์ฐธ์กฐ๋๋ ํด๋์ค๋ ์ง์ ์ ์ผ๋ก ๊ทธ ํด๋์ค๋ฅผ ๊ฐ๋ค ์์ฐ๋ฉด ๋ ์๋ฅผ๋ค์ด a์b๊ฐ ์ํ์ฐธ์กฐ ์ด์๊ฐ ๋ฐ์ํ๋ฉด cํด๋์ค ๋ง๋ค์ด์ a์์ b๋ฅผ ๋ถ๋ฅผ ๋ c๋ฅผ ์ฐธ์กฐํ๊ณ ๋ถ๋ฅด๋๊ฑฐ์ง - dc App
๋ ์ด๊ฑฐ๋๋ฌธ์ ์ง๊ธ 2์ฃผ ๋ ๋ ธ๋๋ฐ ์ด๋์ ๋ ๊ฐ์ด ์๋ค. ๊ณ ๋ง๋ค
https://siyoon210.tistory.com/170
์๊ธ๋
ํ์ธํด๋ณด๋ฉด ์ข์ ํต์ฌ์ A->C<-B
ํํ๋ฉด ์ฝ๊ฒ ๋์ ์ ์์ด ใ ใ - dc App
์ ์ง์ง ๋๋ฌด ๊ณ ๋ง๋ค. ใ ใ ใ ใ ใ
์ฝ๋์ฌ์ฌ์ฉ์ ์ํด์ ๊ฒฐ๊ตญ ์ํ ์์ฑ์ด ๊ณ์ ํ์ํ๊ฒ ๋จ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก ๊ธ์ด์ด๊ฐ ๋งํ ๋ฐฉ์๋๋ก ๋์ํ๊ธฐ ์ํด์ ํ๋ก์ ํธ์ ์์กด์ฑ์ผ๋ก ์ฃผ์ ๋๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ Proxy ํจํด์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐ์ฅ ๋จ์ํจ ์ฑ๋ฅ ๋ฌธ์ ๋ ์๊ณ ๊ธฐ๊ณ์ ์ธ ์์ ์ด ์ข ํ์ํ ํธ ์ฌ์ค DI ํ๋ ์์ํฌ๋ฅผ ๊ตณ์ด ์ฐ๋ ์ด์ ๋ ์ด ๊ธฐ๋ฅ์ ๊ฐ์ ธ๋ค ์ฐ๋ ค๋ ๋ชฉ์ ์ด ๋ ํผ
GameObject ๋ฅผ ์กฐ๋ฆฝํ๋ ๊ณผ์ ์ ์์ด์ ๋ ธ์ถ๋ ํ์๊ฐ ์๋ ๊ฐ์ฒด๊ฐ ์๋๋ฉด ๊ตณ์ด Inspector ๋ก ๋ ธ์ถํ์ง ์๊ณ Singleton ์ฌ์ฉํ๋ ํธ ๋ค๋ง Scene level ๋ก Scope ๋ฅผ ์ ๊ณตํ ํ์๋ ์์ผ๋๊น Scene ๋ณ๋ก Scope binding ์ ๋๊ณ ์์กด์ฑ ๊ด๋ฆฌ์ ํฌํจ๋๋ Game object ๋ค์ด ๋ท๋จ์์ ์์ฑ/์ญ์ ์ ์์กด์ฑ์ ์ถ๊ฐ/์ ๊ฑฐ ํ ์ ์๋๋ก class layer ๋ฅผ ํ๋ ๋ ๋๋ ํธ
๋จ๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ํํ๋ ๊ฒ์ด ์ข๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์์กด์ฑ๊ด๋ฆฌ์์ ๋์์ ๋ฐ์ Game logic ์ ์ค๊ฐ๋ค๋ฆฌ์ use case ๋ก ์ ๋ถ ๋ฐฐ์นํ๊ณ ์ค์ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์ด๋ UI, FX ๊ฐ์ ๊ฒ์์ Presentation ์์๋ง Component level ๋ก ๊ด๋ฆฌํ๋ ํธ ์ด ๋ ๊ฒ์ ๊ท์น์ ๋ฐ๋ผ use case ์์ ์ ์๋ฎฌ๋ ์ด์ ์ ํด๋นํ๋ (์๋, ์ขํ) ๋ฑ์ ์ ๋ณด๊ฐ ํ์ ํ ์ ์์ด ๊ทธ๋ฐ ์ ๋ณด๋ค๋ง ์ํ๋ง์ผ๋ก Repository layer ์ ๋๊ธฐํ์ํค๋ ํธ ์ด๋ฌ๋ฉด Unity ์ Presentation layer ๋ ๋ ์์ ์ผ๋ก ๋ ์ ์๊ณ Game client ๋ด domain, infrastructure layer ๋ ๊ทธ๋ฅ C# Project ์ฒ๋ผ ๊ตด๋ฌ๊ฐ์ ์ข์
์ด๊ฑธ Client backend ๋ผ๊ณ ์ค๋ช ํ๋๋ฐ (์ด๋ฆ์ด ์ข ์๊น ใ ใ ) Unit test coverage ๋ Client backend ์ ํ์ ํด์๋ง ์ ๊ฒฝ์จ๋ ๋์ ์ข์. Test ๋ ์ ๋ง ์ฌ์์ง. ๋ด๊ฐ ๋งํ๋๋ก ๋์ํ๊ธฐ ์ํด์ ์์ฑํด์ผํ๋ ์ฝ๋๊ฐ ์ข ์์ด์ DI ์ชฝ์ผ๋ก ์คํ์์ค์ธ RefleX ๋ RX ์ชฝ์ผ๋ก ์คํ์์ค์ธ UniRX ๋ฅผ ์ฐ๊ณ ์์
๋๊ฐ์ ๊ฒฝ์ฐ ์ฑ์ด๋ผ์ ์น์ด๋์ ๊ฐ๋ฐํ๊ฒฝ์ด ์ข ๋ฌ๋ผ์ ์ฉ์ด๋ผ๋๊ฐ ๊ทธ๋ฐ๊ฒ ์ข ๋ชจํธ ํ ์ ์๋๋ฐ Data layer ๅค ์ํ๋ฅผ stateless ํ๊ฒ ๋ฌด์ํ๋ ๊ฐ๋ฐํ๊ฒฝ์์๋ ์ด๋ ๊ฒ ๊ฐ๋ฐํ๋๊ฒ ํจ์ฌ "๋" ์ ๊ฒฝ์ฐ์ผ๊ฑฐ์ ์์งํ ์ค์ ๊ฐ๋ฐ์๋ ํฐ ์ฐจ์ด๋ ์๋ค๊ณ ์๊ฐํจ ์ ์ด์ ์ธ๋๊ฒ์ ๊ฐ๋ฐํ๊ฒฝ์ ๋ณธ์ธ์ด script asset์ ๋งค์ฐ ๊ณต๊ฒฉ์ ์ผ๋ก ํฌ์ ํ์ง ์๋ ์ด์ Project ๊ฐ ๋ณต์กํด์ง ๊ฐ๋ฅ์ฑ ์์ฒด๊ฐ ๋งค์ฐ ๋ฎ์.. ์ค๊ณ์์ ์ง๋์น๊ฒ ๋ณต์กํ๊ฒ ๋์๋ค๋ฉด.. ์ด๊ฒ๋ง๋ ๋ค์ ๊ณ ๋ฏผํด๋ณผ ํ์๋ ์๋ค๊ณ ์๊ฐํ๊ณ