๋ณดํต ์์กด์ฑ ์ฃผ์ ์ FindObjectofType๋ฅผ ์ฐ๋๋ฐ
์ด๋ ์ฌ์์ ๊ฒ์์ ํ๊ธฐ๋๋ฌธ์ ๋ง์ ์์์ ๋จน๋๋ฐ
GPT๊ฐ ์ถ์ฒ์ ํ์ง ์์
์ฑ๊ธํค์ ๊ทธ์๋ฐํด์ ๋ถ๋ช ํ ์ฑ๋ฅ์ ์ด์ ์ด ์กด์ฌํจ
๋ณดํต FindObjectofType๋ฅผ ์ธ๋ ์์กด์ฑ ์ปจํ ์ด๋, ์ฆ ์คํํธ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ ์์กด์ฑ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ๊ฑธ ๋ฐํ์ผ๋ก ์์กด์ฑ์ ์ฃผ์ ํ๋๊ฒ
์ ํต์ ๋ฐฉ๋ฒ์ด๊ณ , ๋ง์ ํจํด ์ฑ ์์ ์ฅ๋ คํจ
๋ค๋ง ์ด๋ฌํ ์์กด์ฑ ์ฃผ์ ์ด ์ปค์ง์๋ก ๊ฒฐ์ ์ ์ผ๋ก ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ธฐ๋๋ฌธ์ ์์ ์๋์ ์์ฐ์ฑ์ด ๋จ์ด์ง ์ ๋ฐ์ ์์.
์ ๋ํฐ์์๋ zenject์ ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ์ง์ํ๋๋ฐ,
์ด ๊ฒฝ์ฐ ํด๋์ค์์ ์ธํฐํ์ด์ค-๊ตฌํํด๋์ค ์์ฑ-์์กด์ฑ ์ฃผ์ ์ปจํ ์ด๋๋ก ํด์ผํด์ ์ด ๊ฒฝ์ฐ ๋ด ์ธ๋ฒคํ ๋ฆฌ ์์คํ ์ ๋ค์ ๊ณ ์ณ์ผํจ.
์ฅ๋จ๊ธฐ์ ์ผ๋ก ๋ฐ์ง์๋ฉด
public interface IItemDatabase
{
}
๋ฑ์ผ๋ก ๋ง๋ค๊ณ ,
var itemDatabase=new ItemDatabase();
Field Item ์์ฑ์ ์์ดํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ธ์คํด์ค ์ฃผ์ ์ด ๋ง๋๋ฐ,
์ด๊ฒ ๋ง๋๊ฑด๊ฐ ์ถ๋ค.
์ผ๋จ ์ฑ๊ธํค์ ์ฅ์
1. ์ฝ๊ณ ๋น ๋ฅธ ๊ตฌํ
2. ์ฑ๋ฅ์์ ๋ถ๋ช ํ ์ด์
3. ์ฐธ๊ณ ํ ์ ์๋ ๋ง์ ๋ ํผ๋ฐ์ค.
์ฑ๊ธํค์ ๋จ์
1. QA๊ฐ ์ด๋ ต๊ณ ๋ฒ๊ทธํ ์คํธ๊ฐ ์ด๋ ค์
2. ๋ชจ๋ํ๋ก ๋ค์ด๊ฐ ๊ฒฝ์ฐ ๋ชจ๋ํ ์ฑ๊ธํค์ ๊ฐ๋ ์ด ํจ์ฌ ์ด๋ ค์
3. ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ฐ๋ฅธ ์ด๋ ค์.(ํ์์ฑ)
์์กด์ฑ ์ฃผ์ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฅ์
1. ๋ฎ์ ๊ฒฐํฉ๋๋ก ์ธํ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ
2. ๋ฒ๊ทธ ํ ์คํธ๊ฐ ์ฌ์.
์์กด์ฑ ์ฃผ์ ์ ๋จ์
1. ๋ด ์์ค์์ ์ฝ์ง ์์ ์ฝ๋ ๊ตฌํ
2. ํ์ฅ์ฑ์๋ ์ฝ๋
๋์ ๊ฒฝ์ฐ ์ด๋ฏธ ๊ฒ์ ๋งค๋์ ํด๋์ค๋ฅผ ์ฑ๊ธํค์ผ๋ก ๊ตฌํํ๊ธฐ๋๋ฌธ์ ์ฑ๊ธํค์ด ๋ง์์๋ก ์ ์ ๋ ๋ฒ๊ทธ ํ ์คํธ๊ฐ ํ๋ค์ด์ง๋ค.
์ด ๊ฒฝ์ฐ ์ ๋์ ์ผ๋ก ๋ด๊ฐ ํ์๋จน์ ์ํ์ธ ๊ฒ์์์ ์ ์ ๋ค์๊ฒ ๋ถ์พํ ๊ฒฝํ์ ์ค ๋ฒ๊ทธ๋ฅผ ์ฅ๊ธฐ์ ์ผ๋ก ์์ ํ๊ธฐ๊ฐ ํ๋ค๋ค.
๋ฐ๋ผ์ ์๋๋ผ๋ฉด ์์กด์ฑ ์ฃผ์ ์ ์ ํํด์ ์คํํธ์ ์คํฌ๋ฆฝํธ๋ก ์์กด์ฑ ์ปจํ ์ด๋๋ฅผ ์์ฑ ํ๋๊ฒ ๋ง๋ค.
ํ์ง๋ง ๋์ ๊ฒฝ์ฐ
1.Zenject ํ๋ ์์ํฌ์ ์ฌ์ฉ ๊ฒฝํ ์์
2.์์ฑ๋ ์ธ๋ฒคํ ๋ฆฌ ์์คํ ์ ํ๊ธฐ
์ด 2๊ฐ๋ฅผ ๊ณ ๋ คํด์ผํ๋๋ฐ, ์ด๋ ์๋นํ ์ ํ์ ์ผ๋ก ๋ง์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ฅธ๋ค.
๋ค๋ง ์์ฑ๋ ๊ฒฝ์ฐ์
1. QA์์ ์ด์
2. ์์ฑ๋ ์ธ๋ฒคํ ๋ฆฌ ์์คํ ์ ์์คํ ์ถ๊ฐ๊ตฌํ์์ ์ด์
์ด์ค 2๋ฒ์ด ์๋นํ ๋งค๋ ฅ์ ์ธ ์ต์ ์ธ๋ฐ, ์ ๋ชจ๋ฅด๊ฒ ๋ค.
์ ์ ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฐฐ์์ ์๊ฐ์ด ์ถฉ๋ถํ์ง๋ง ๋๋ ๋ ธ๊ฐ๋ค ๊ณต์ฅ์ผ์ ํ๋ฉด์ ๊ฒ์ ๋ง๋ค๊ธฐ๋๋ฌธ์ ๋น ๋ฏํ๋ฐ
์ด๋ ต๋ค. ์ธ์
์์ฑํ๊ฑธ ๋ถ์๋ค๋ ์ฌ๋ฆฌ์ ์ ํญ๊ฐ์ด ๋๋ฌด ํฌ๋ค.
๋ฒ์จ ๋ช๋ฒ์ ํ์ง๋ง ์ด๊ฒ ์ ์ผ ํ๋ค๋ค
์๊ฐ์ด๋ผ๋ ๋ฆฌ์์ค๊ฐ ์กฐ๊ธ๋ง ๋ ๋ง์์ผ๋ฉด ์ข์์ํ
๋ฐ
๋ฐฐ์์ ๋์ด๊ฐ ๋๋ฌด ๋ฆ์๊ณ , ์๊ฐ์ด๋ผ๋ ๋ฆฌ์์ค๊ฐ ๋๋ฌด ๋ถ์กฑํ๋ค.
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ทธ๋ ๊ฒํ๋ฉด ๊ตฌํ์์ ์ ํ์ด ์๊ฐ๋ณด๋ค ํฌ๋๋ผ
์ฑ๊ธํค์์ ์์กด์ฑ ๋ฌธ์ ๋ฒ์ด์ง๋๊ฑด ์ฑ๊ธํค ์์ฒด ๋ฌธ์ ๋ผ๊ธฐ๋ณด๋จ ์ค๊ณ ๋ฌธ์ ์ผ๊ฑฐ๊ฐ์
๊ทธ๊ฒ๋ ์๊ธดํ ๋ฏ
์ด๋ณด๋ผ ๋ณธ๋ฌธ๋ด์ฉ์ ์ดํด๋ชปํ๊ณ ๋ด์๊ธฐ๋ผ ๋ฏธ์ํ์ง๋ง ์ธ๋ฒคํ ๋ฆฌ ์์คํ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ๊ตฌ์กฐ๊ฐ์๊ฑฐ ๋ฒ๋๋ทฐ๋ก๋ผ๋ ์ฐ ํจ ํ์ด์ค์์๋? ๊ฑด์ ๊ฐ์ ๊ฒ ๋ง๋ ๋ค๊ณ ํ๊ฑฐ๊ฐ์๋ฐ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๊ณ ์ถ์ด์ ๊ธฐ๋ฅ ์ธ๋ฒคํ ๋ฆฌ ์์คํ ์ ํ๋ธ์์ ์๋ ค์ฃผ๋๊ฑด ๋ญ๋ถํฐ ์ด์ผ ์ ์ฉํด์ผํ ์ง ๊ฐ์ด ์์ด ใ
๋? ๋์๋ธ๋ก์ ์ธ๋ฒคํ ๋ฆฌ๋ผ ๋์ ์๋ ์ง๋ ใ ใ
์ง๊ธ์ ์ข ๋ฐ์๋ ์๋๊ณ ๋ด์ผ์ด๋ ์๊ฐ๋จ์ผ๋ฉด ํ ๊ฒ
์ธ์ ๋ ๋กํ์ง ์๊ฐ์ ๋ฆฌํ ๊ฒธ ๋ก๊ธธ ๋ ํด์ฃผ๋ฉด ๊ตฟ
์ฑ๊ธํค์ ์ฑ๊ธ์ค๋ ๋์์ ๋ฒ๊ทธ ์์ ํ๊ธฐ๋ ์ข์ ํ๋์ ์ธ์คํดํธ๊ธฐ๋๋ฌธ์ ์ฝ๋ํ๋ฆ๋ฐ๋ผ๊ฐ๊ธฐ๊ฐ ์ฉ์ดํด์ ํ๋ฆ๋๋ก ๋ณด๊ณ ๊ณ ์น๋ฉด ๋จ ํ์ง๋ง ๋ฉํฐ์ค๋ ๋์์ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ์ฑ๊ธํค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ํ๊ณณ์๋ง ์กด์ฌํ๊ธฐ๋๋ฌธ์ ์ฌ๋ฌ๊ณณ์์ ์ฐธ์กฐํ๋ ค๋ฉด ๋ฝ์ด๊ฑธ๋ฆฌ๊ณ ๋ฏธ์น์ํฉ์ด ๋์ด ์๋ฒ์ฝ๋๊ฐ ์๋๋ผ๋ฉด ์ฝ๋๊ฐ ์ปค์ง์ ๋ฐ๋ผ์ ๋ฒ๊ทธ๊ฐ ์์ฑ๋๋ ๋ฌธ์ ๋ ์ฑ๊ธํค๋๋ฌธ์ด ์๋๋ผ ๊ฑฑ์ ์ํด๋๋จ
์ต์ด์ ์์ดํ ๋ฐ์ดํฐ๋ง ์ฑ๊ธํค์ผ๋ก ๋ง๋ค์ด๋ด๊ณ ๋๋จธ์ง๋ ๊ฐ์ ธ๋ค ์ฐ๋ ๋ฐฉ์์ผ๋ก ์ฐ๋ฉด ์์กด์ฑ๋ฌธ์ ๋ ๋ง์ด ์ค์ด๋ค๊บผ์ mvc ํจํด ์ถ์ฒ
์ญ์ ์๋์ด์ญ๋๋ค. ๊ณ ๋ง์ต๋๋ค.
์ ๊ฐ ๋ง ์ด์ ์ฝ๋์ ๋๋ฌ ์ํฉ์ธ์ง๋ผ. ์ด๋ค ํจํด์ ์จ์ผํ ์ง ์ ๋ชฐ๋๋๋ฐ ์ฐพ์๋ณด๋ ๋ฐ๋ก ๋์ค๋ค์ ๊ณ ๋ง์ต๋๋ค
์ฑ๊ธํด ์จ๋ ๊ด์ฐฎ์. circular dependency ์์๊ธฐ๊ฒ ์ธํฐํ์ด์ค ์ ์จ์ฃผ๋ฉด์ ํด๋์ค ์ฐธ์กฐ ์์๋ ๊ฐ์๊ฑฐ ํ๋ ๊ทธ๋ ค๋๊ณ ์์ ํ๋ฉด ์์ํด์ง. DI ๋ ๋๋ ์ง๊ธ VContainer ์ฐ๊ณ ์๋๋ฐ, ๊ณต๋ถํ๋ฉด์ ์ฐ๊ธฐ ์์ํ๊ฑฐ๋ผ ๊ทธ๋ฅ ์ฐ๊ณ ์์ด์ ์ฐ๋ ๋๋์ด ์์. ์ ๋ํฐ์๋ [SerializeField]๋ผ๋ ๊ฐ๋ ฅํ Injection ๋๊ตฌ๊ฐ ์์ผ๋ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉํด๋ณด๋๊ฑธ ์ถ์ฒํจ. ์ด๊ฑธ๋ก ์๋๋ ๊ฑด ์ค๊ณ๋ฏธ์ค๋ผ๊ณ ์๊ฐํด๋ณด๋ฉด ์ข์๋ฏ.
๊ฐ์ฌํฉ๋๋ค ์๋
https://docs.unity3d.com/kr/2022.3/ScriptReference/Object.FindAnyObjectByType.html