A์คํฌ๋ฆฝํธ
static private GameManager _instance = null;
ย ย void Awake()
ย ย {
ย ย ย ย _instance = this;
ย ย }
ย ย static public GameManager GetInstance()
ย ย {
ย ย ย ย return _instance;
ย ย }
B์คํฌ๋ฆฝํธ
GameManager gm;
Awake()
{
gm = GameManager.GetInstance();
}
Awake ์คํ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋๋ค๊ณ ๋ค์๋๋ฐ
๊ทธ๋ผ B์คํฌ๋ฆฝํธ์์ ์ ๊ฑฐ Start์ ์จ์ผ ์์ ํ๋ ค๋??ย
A์์ this๊ฐ ๋จผ์ ๋ค์ด๊ฐ๋ฆฌ๋ ๋ณด์ฅ์ด ์์ผ๋๊น?
๋จธ.. ์คํํธ์์ ํ๋ฉด ๋๊ธดํ์ฃ . ๊ทผ๋ฐ ์ฑ๊ธํค์ ์์ํ ๋ ๋ฏธ๋ฆฌ ์บ์ฑํ ํ์ ์์?
OnEnalbe๋ก ๋ญ ์ข ์ฌํ์ฉ ํ๋๋ผ.. ๊ทธ๋์ ์คํํธ์ ์บ์ฑํ ์ ์๊ณ ๊ฑ OnEnable์ ์ธ๊น์
๊ฐ์ฅ ์์ ํ ๊ฑด ๊ฒ์๋งค๋์ ๊ฐ ํธ์ถํด์ฃผ๋ ๊ฑฐ๊ธดํ๋ฐ ์ด๋ค ์ํฉ์ธ์ง๋ฅผ ๋ชจ๋ฅด๋ ์ ๋ ใ ?ใน
static public GameManager GetInstance() { if (_instance == null) _instance ์์ฑ return _instance; } ๊ทธ๋์ ์ด๋ฐ ํํ๋ก ์์ผ๋ฉด ์์ฑํ๋ ํํ๋ก ๋ง์ด ๊ตฌํํ์ง
ใ ใ ์ด๊ฒ ์ข์๋ฏ
ใณใ
awake ํ์ง๋ง๊ณ null์ด๋ฉด ์์ฑํ๊ฒํ์ - dc App
GameManager ๊ธ์ด๋ผ๋ฉด Project Settings>Script Execution Order์์ ์์ ์ค์ ํด๋ ๋์์ง ์๊ฒ ๋๋ฐ? ๊ทธ ์ธ์ ๋จ์ฉ์ ์์ข์
์ค ์์ ์ค์ ๋ ์๋ ๋ณด๋ค์ ใณใณ
์๊ธด๊ฑธ ๋ณด๋ GameManager๊ฐ Mono๋ฅผ ์์ ๋ฐ๊ณ ์์๊ฑฐ ๊ฐ์๋ฐ ๊ทธ๋ผ ์์ฑ ๋ชปํ ํ ๊ณ , Resources ํด๋์ GameManagerํ๋ฆฌํน ๋ฃ๊ณ ๋ถ๋ฌ์ค๋ ๋ชจ์์๋ฅผ ์ทจํ๋๊ฒ๋ ๋ฐฉ๋ฒ์
ใณใณ
์, ํผ์ ๋ป์ง์ค์ด์์ ๋ณด๋๊น B์คํฌ๋ฆฝํธ ์ด์ฐจํผ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์ Start์์ ํ๋ฆฌํน์ผ๋ก ์์ฑ๋๋๊ฑฐ๋ผ Awake์ ์จ๋ ์๊ด ์์๋ฏ;; ์์ ์ ์ง๋์ ์ฝ๋ ์ค๋๋ง์ ๋ณด๋๊ฑฐ๋ผ ํผ๋์ค๋ฌ์ ์.
๊ทธ๋ฌ๋ฉด ๊ทธ ์์ฑ ์์ผ์ฃผ๋ ์ ๊ฐ ์ด๊ธฐํ๊น์ง ํธ์ถํด์ฃผ๋ฉด ์ ๋๋
์ฑ๊ธํค์ ๋ง๋ค์ง ๋ง๊ณ ๊ฒ์ํ๋ฉด ์ข์๊ฑฐ ๋ง์ด ์๋๋ฐ ์์ธ์ฒ๋ฆฌ ์๋์ด ์๋ ๊ฑฐ ํ๋ ๊ตฌํด์ ์ฐ๋ฉด ๋จ.