์ ๊ฐย Script Execution Order๋ฅผ ์ฌ์ฉํด์ ์์๋ฅผ ์ด Manager์คํฌ๋ฆฝํธ๋ฅผ ์ ์ผ ๋จผ์ ์คํ๋๊ฒํ๊ณ
๊ทธ๋ค์์ผ๋กย
์ด ํ๋ ์ด์ด ์คํฌ๋ฆฝํธ๋ฅผ ์คํ๋๊ฒ ํด๋๊ณ
๋ง์ง๋ง์ผ๋ก
์ด ์นด๋ฉ๋ผ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋๋ก ์์๋ฅผ ์ง๋จ๋๋ฐ์ย
์ ๊ฐ ์ด๊ฑธ๋ก ์ฒ์์ player๊ฐ ์์ฑ์ด ๋๊ณ ๊ทธ๋ค์์ย
PlayerController์์ instance๊ฐ ๋ค์ด๊ฐ์ง๋ฉฐย
๋ง์ง๋ง์ผ๋ก ์นด๋ฉ๋ผ์์ ์ฐพ์ ์ ์์์ค์์๋๋ฐ์
์นด๋ฉ๋ผ์์ ๋ชป์ฐพ๊ฒ ๋ค๊ณ ์๋ฌ๊ฐ ๋๋ค์ย
instance๊ฐ ์๋ค๋๊ฑฐ ๊ฐ์๋ฐ ์ ๊ทธ๋ ๊ฒ ๋๋๊ฑด๊ฐ์??
instantiate๋ง ํ๊ณ instance์ ๋ฃ์ด์ฃผ์ง ์์์ค๋๊น์ค
instance๊ฐ null ์ด๋ฉด this ๋ฐ๋๋ฐ?
๊ทธ๊ฑด ํ๋ ์ด์ด์คํฌ๋ฆฝํธ๊ณ
์ ์ฒซ์งค์ด PlayerController์คํฌ๋ฆฝํธ๊ฐ ์๋๊ตฌ๋
์ง๊ธ ์คํ์์๊ฐ 1 ๋ค์ 3๋ค์ 2์ผ๊ฑฐ์ ์๋๋ฉด start๋ awake๋ onEnable์ด๋์ ๋ค๋ฅด๊ฒ ์์ฑ๋๊ณ ๋ฐ๋ก ์คํ๋๋๊ฒ ์๋๋๊น
ํ๋ ์ด์ด์คํฌ๋ฆฝํธ๋ executionOrder์์ ๋นผ๊ณ start์ ์๋ ์ฝ๋๋ฅผ awake์ ๋ฐ์ผ์
์ผ๋จ ์ ๋ด ํจํด ์ธ๊ฑฐ๋ฉด Awake ๊ฐ์๊ฑธ๋ก ์ฐ์ ์์๋ฅผ ์ข ์กฐ์ ํ๊ธธ ๋ฐ๋ผ๊ณ ; ๋๊ฐ ์ธ์คํด์์์ดํธ๋ก ๋ง๋๋๊ฒ ์ผ๋ง๋ ๋ฌด๊ฑฐ์ด์ค ์๊ณ ? ์์ฑํ๋๋ฐ 1ํ๋ ์์ด์ ๊ฑธ๋ฆด์๋ ์๋๋ฐ; ์ค๊ณ์์ฒด๊ฐ ๋ง๋ ์๋๋ ๋ฐ์์ใ ใ
Script Excution Order ๋ 1๋๋๋ฉด 2 ์คํํ๋ค ์ด๋ฐ ๊ฐ๋ ์ด ์ ํ ์๋๋๊น ์ด๋ฐ์์ผ๋ก ์๊ฐํ์ง๋ง๋ผ... ๋๊ฐ์ ์ด๋ณด๊ฐ ์ฐ๋ผ๊ณ ๋ง๋ค์ด๋์ ๊ธฐ๋ฅ๋ ์๋
์์์๋๊ฒ '๋จผ์ ' ์คํ๋๋ค๋๊ฑฐ์ง ์์์๋๊ฒ ๋ค ๋๋๊ณ ๋ฐ์์๋๊ฒ ์คํ๋๋ค ์ด๋ด ๋ฐ์์ผ๋ก ์ฐ๋ฉด ์๋๋ค๊ณ ์ด๊ธฐํ๊ฐ ๋๋ฌด ๋ณต์กํด์ ์คํํธ ์ด์จ์ดํฌ ๋๊ฐ๋ก ํด๊ฒฐ์ด ์๋๋ ํผ์น๋ชปํ ์ฌ์ ์์๋ ์ฐ๋๊ฑฐ์ง ๋๊ฐ ์ ๋ด์์ผ๋ก ์ฐ๋
๊ฒจ์ฐ ๋ฑํ๋ ๋ง๋๋๊ฑด๋ ์ ๊ฒ ๋ฌด๊ฒ๋ค๊ณ ์ค๊ณ์์ฒด๊ฐ ๋ง๋์๋๋ค๋๊ฑฐ๋ ๋๊ฐ์ ์ด๋ณด๊ฐ ์ฐ๋ผ๊ณ ๋ง๋ค์ด๋์ ๊ธฐ๋ฅ์๋๋ผ๋๊ฑฐ ์ค์ค๋ก๊ฐ ์ฝ์ด๋ ์ข ๊ทธ๋ ์ง ์์ด๊ฐ
์ธ์ฐ์ง ๋ง๊ณ ์ฌ์ด์ข๊ฒ ์์ฐํด
๊ทธ๋ผ ์ ์ง์ ํ๊ณ ์๋๋ฐ ๋ฌด์กฐ๊ฑด ์ํ๋ค ํด์ค? ์ผํฑ์ด๊ฐ ์๋คใ ใ ๊ทธ๋ ์ผ ๋ง์ง๋ง ์คํฌ๋ฆฝํธ ํ์ด๋ฐ ํ 10000ms ๋ค๋ก ๋ก๊ฒจ ๊ทธ๋ผ ๋ฌด์กฐ๊ฑด ๋ ๊ฑฐ์ผ
์ํ๋ค๊ณ ํด์ฃผ์ง ์์๋ ํ๋ฆฐ์ ๋ณด๋ฅผ ์ฃผ๋ฉด ์๋จ๋ค
๋๋ค์ด ์ธ์ธ ํ์๊ฐ ์๋๊ฒ... PlayerController.instance ์ด๋ ๊ฒ ์ฐ๋ ๊ผฌ๋ผ์ง ๋ณด๋ฉด ์ฑ๊ธํด์ผ๋ก ์ง ๋ต์๊ณ ์ง ๊ฑด๋ฐ... ์ ์ด์ ์ฑ๊ธํด ํด๋์ค ์ค๊ณ ๋ฏธ์ค์. PlayerController.instance == null ์ฒดํฌ๋ฅผ ์ธ๋ถ์์ ํ๋ฉด ์๋์ง. ํ๋ค ๋ชปํด unity singleton์ด๋ผ๊ณ ๊ตฌ๊ธ์ ๊ฒ์๋ง ํด๋ด๋ ๊ณต์ ๊ฐ์ด๋๋ผ์ธ ์กฐ์ฐจ get์์ ์์ฑํด์ ์ฐ๊ฒ ๊ฐ์ด๋ ํ๊ณ ์๋๋ฐ... ์ง๋ฌธ์๊ฐ ใ ๊ฐ์ด ์ง์ ์๋์๊ฐ๋ ๊ฑฐ๋๊น ๊ณ ์ณ์ค ํ์ ์์ด
https://wiki.unity3d.com/index.php/Singleton
ํน์๋ ์ถ์ด์ ํ๋ ๋ง์ธ๋ฐ... ์ ๊ฑฐ ์ฑํดํด์ด๋ผ๊ณ ๋ง๋ ๊ฑฐ ์๋์ง?
์ธ๋ถํด
์๊ธฐ๋ณด๋ค ์ค๋ ฅ์ด ๋ฎ์๋ณด์ด๋ ์ฌ๋์๊ฒ ํ์์ด ๊ฐํด์ง๋ ์ธ๋ถ์ดใ ใ
์ด๊ฑฐ ์ง๋ฌธํ๋ฒ์ฌ๋ ธ๋ค๊ณ ์ด๋ ๊ฒ ์๋จน์์ค๋ชฐ๋๋ค
๊ทธ๋ฆฌ๊ณ ์ฑ๊ธํค์ ์ด๋ผ๊ณ ๊ตฌํํด๋์๊ฒ์๋๋ผ ์ด๊ฑฐ ๊ธฐ๋ฅํ๋ฒ์จ๋ณด๋ ค๊ณ ์ผ๋ถ๋ฌ ๊ฑ ์ ๋ ๊ฒ ํด์ ๊ตฌํํ๋ฒํด๋ดค๋๊ฑฐ์
์๋ ์๋ฐ์ ์๋ ์ฝ๋ ์ฌ๋ ค๋๊ณ , ์ด๊ฑฐ ์์๋์ผ? ์ด๋ฌ๋๊น ์ ์ณ๋จน๋ ๊ฑฐ์. ์ฑ๊ธํด ์๋๋ฐ ์ฑ๊ธํด ๋น์ค๋ฏ๋ฆฌํ๊ฒ ๋ง๋ค์ด์ ์ฐ๋๊น null ๊ฐ ์๋ฌ ๊ฐ์ ๊ฑฐ ๋๋ ๊ฑฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค ๋ ๋์ PlayerController๋ฅผ ์ฑ๊ธํด์ผ๋ก ์ง๋ฉด ์๋จ.
์๋นํธ๋ ค๋๊ฑด ์๋๋ ๋๋ ์ฝ๋๋ฉด ์ ์ด์ ์ง๋ฌธ์ ์์ฌ๋ฆฌ์ง ์์๊น์ค
์... ๋ฐ๋ฐ์ ๋ชปํ๊ฒ ๋ค
๋ง๋์๋๋๊ฑธ ๋ง๋์๋๋ค๊ณ ํ๋ค๊ณ ์์ด๋ผ๋คใ ใ ๋๊ธ ์๋ฌ๊ณ ๋ง์ง ์ด์ ์จ๋ฐ ์์ง์ ํ๋ค
ใ ใ = ์ง๋ฌธ์๊ฐ ใ ๊ฐ์ด ์ง์ ์๋์๊ฐ๋ ๊ฑฐ๋๊น ๊ณ ์ณ์ค ํ์ ์์ด ์ง๊ฐ์ํด๋๊ณ ๋จ์์ด ๋ง๋ ์๋๋ค๊ณ ๋ง ํ์ผ๋ฉด ์๋ง๋์ํ๋ค
๋จ์ํ