์ ๋ํฐ ์์ง์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค
Awake ํจ์๋ก ์์ฃผ ์ฐ๋ ์์๋ค์ ์ฑ๊ธํค์ผ๋ก ์ ์ฅํด๋๊ณ ์ฐ๋ค๊ฐ
ํ๋ก์ ํธ ์ค๋ฐ์ค๋ฉด์ OnEnabled ์ฐ๊ธฐ ์์ํ๋ฉด์
์ฝ์์ฐฝ์ด nullReference ๋ฉ์ธ์ง๋ฅผ ํ ํ๊ธฐ ์์ํ๋ค์ ใ
์ฐพ์๋ณด๋ Awake๋ OnEnabled๋
ํธ์ถ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋ ๊ฒ์ด ์์ธ์ด๊ตฐ์...
(A์ Awake๊ฐ ์คํ๋ ํ์๋ B์ Awake๊ฐ
์คํ๋๋ ๊ฒ์ด ์๋๋ผ A์ OnEnabled๊ฐ ์คํ)
์ผ๋จ ํ์ฌ๋ ๋๋ค๋ฅธ ๋ฌด์ฐจ๋ณ์ ์ธ ์ฝ๋ฃจํด ๋จ๋ฐ๋ก
OnEnabled๋ก ์คํํ ํจ์๋ฅผ ํํ๋ ์์ฉ ๋ฆ๊ฒ ์คํํ๊ฒ ํ๋ ๊ฑธ๋ก
์์๋ฅผ ๋ง์ถ๊ณ ์์ต๋๋ค...
ํน์ ์ด๋ฐ ๋ฐฉ๋ฒ ์ธ์๋ ์ข์ ์์ ๋ณด์ฅ๋ฒ์ด ์์๊น์??
์์ ํด๋น ํด๋์ค๊ฐ null์ด๋ฉด ๊ฐ์ ๋ก ํด๋น ํด๋์ค์
Awake ํจ์๋ฅผ ์คํ์ํจ๋ค๊ฑฐ๋...
awake, start๋ฅผ ๋ชจ๋ ์์ ๋ฒ๋ฆฌ๊ณ ๋ง๋ ๋์ด ์ด๊ธฐํ ์์ผ์ฃผ์ธ์ฌ
์์ด๊ณ ~ ์ํํ ์ฐ๋ฆฌ ์คํธ๋ฆฝํธ ์ ์ ์ฒ์น๋ค~
ใทใท ๊ทธ๋ ๋ค๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์
์ผ๋จ yield return null ๋จ๋ฐ๋ก ์ด๋์ ๋ ์ง์ ์ด ๋์ผ๋ ๋ฐฉ๋ฒ์ ์ฒ์ฒํ ์๊ฐํด๋ณด๊ฒ์... ๋ค์ ํ๋ก์ ํธ๋๋ ํ๋ฒ ์์จ๋ณผ๊ป์...
๋๋ ์ฑ๊ธํค ์ฐ๋ ์คํฌ๋ฆฝํธ๋ค์ Scripts Execution Order ๊ธฐ๋ฅ์ ํตํด ๊ฐ์ ๋ก ์ - ์์์ ์คํํ๋๋ก ๊ณ ์ ์์ผ๋จ์ด.
์ค... ์ด๋ฐ ๋ฐฉ๋ฒ๋ ์๊ตฐ์. ์ฝ๊ฐ ์คํ ์์๋ฅผ ์ ํ์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํ์๋๋ฐ ๋ฑ ์ํ๋ ๊ธฐ๋ฅ์ด๊ธด ํ๋ค์!
์ ํํ๋ ํ์ฑ์ํ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ๊ฒฝ์ฐ ๊ฐ์ฒด์์ฑ ์งํ OnEnable์ด ๋ถ๋ฆฌ๋๋ฐ, Awake๋ ์ฒซ OnEnable์ด ๋ถ๋ฆฌ๊ธฐ ์ง์ ์ ํธ์ถ๋๋ค๊ณ ๋ณด๋๊ฒ ๋ง์. (Start์ ํธ์ถ ์์ ์ด ์ฒซ Update ํธ์ถ ์ง์ ์ธ ๊ฒ๊ณผ ๊ฐ์) ๋ฐ๋ผ์ ๊ฐ์ฒด A, B๊ฐ ์์ฑ๋๋ ๊ฒฝ์ฐ ๊ฐ์ฒด์์ฑ(A) - Awake(A) - OnEnable(A) - ๊ฐ์ฒด์์ฑ(B) - Awake(B) - OnEnable(B) ์ด ์์๋ก ํธ์ถ๋๋ ๊ฒ์. ์ฒซ OnEnable ์ง์ ์ ํธ์ถ๋๋ ๋งํผ ๋นํ์ฑ ์ํ๋ก ์์ฑ๋๋ ๊ฒฝ์ฐ Awake ์ญ์ ๋์ค์ ํ์ฑํ๋๋ ์์ ์ ํธ์ถ๋จ. ์ด๊ธฐํ ๋ฌธ์ ์ ์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ฒซ๋์์ ๋งํ๋ฏ ๋ง๋ ๋์ด ์ด๊ธฐํ๋ฅผ ์์ผ์ฃผ๋ ๊ฒ์. ์ข ์๋๊ฐ ์๋ ์๋ ์๋๋ฐ ๋๊ท๋ชจ ๋ฆฌํฉํ ๋ง์ ๊ฒฝํํ ์ข์ ๊ธฐํ๋ผ ์๊ฐํ๊ณ ํ๋ฒ ์ง๋ฌ๋ณด๋ ๊ฑธ ์ถ์ฒํจ.
์ ๊ฐ ์ ํํ ๋ฐฉ๋ฒ์ ์ ๋ชฐ๋ผ์ ๊ทธ๋ฐ๋ฐ ์ฑ๊ธํค S๊ฐ ์๊ณ , ํด๋์ค A๋ฅผ ์ฐธ์กฐํ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด / A ์์ MonoBehaviour.Awake() ๋์ ์ ์ปค์คํ Awake ํจ์(์์๋ก CustomAwake()๋ผ๊ณ ๋ช ๋ช ํจ)๊ณผ ์ปค์คํ OnEnableํจ์(์์๋ก CustomOnEnable()) ํจ์๋ฅผ ๋ฃ๊ณ / S์ MonoBehaviour.Awake() ํจ์ ์์ A.CustomAwake(); ๋ฅผ ํธ์ถ ๋ฐ ์ฐธ์กฐํ๊ณ / S์ MonoBehaviour.OnEnable() ํจ์ ์์ A.CustomEnable();๋ฅผ ํธ์ถํ๋ฉด ๋๋๊ฑด๊ฐ์??
์.... ์ด์ ์ข ๋ฌด์จ ์ํฉ์ธ์ง ์ง์์ด ๊ฐ๋ ๋ฏ 1. ์ํธ์ฐธ์กฐ๋ ํญ์ ์ผ์ ๋ณต์กํ๊ฒ ๋ง๋ฌ. ๊ทธ๋ฆฌ๊ณ ์ฑ๊ธํค์ ๋ชจ๋ ๊ฐ์ฒด์์ ์ ๊ทผ๊ฐ๋ฅํ ๋งํผ, ์ฑ๊ธํค์ด ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ค๋ฉด ๊ทธ ์์ ์ ์ด๋ฏธ ์ํธ์ฐธ์กฐ๋ผ๊ณ ๋ด๋ ๋ฌด๋ฐฉํจ. ์ฑ๊ธํค์ด ์ฌ์ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฐธ์กฐํ๋ ๊ฑธ ํผํ๊ณ , ๊ฐ์ฒด๊ฐ ์ด๊ธฐํ ๋จ๊ณ์์ ์ฑ๊ธํค์ ์๊ธฐ ์์ ์ ๋ฑ๋กํ๋ ์ชฝ์ด ์ ๋ฆฌํจ. 2. ์ด๊ธฐํ ์์๋ฅผ ๋ง์ถ๋ ค๋ฉด, Script Execution Order๋ฅผ ํตํด ์ฑ๊ธํค์ด ๋จผ์ ์ด๊ธฐํ๋๋๋ก ์ค์ ํ๊ณ , ์ฌ ๊ฐ์ฒด๋ค์ ์ด๊ธฐํ ์์ ์ ์ค์ค๋ก๋ฅผ ์ฑ๊ธํค์ ๋ฑ๋กํ๋๋ก ํธ์ถํ๋ฉด ๋จ. ๊ทธ๋ฌ๋ฉด ์ฑ๊ธํค ์ด๊ธฐํ -> ์ฌ ๊ฐ์ฒด ์ด๊ธฐํ -> ์ฌ ๊ฐ์ฒด๊ฐ ์ฑ๊ธํค์ ๋ฑ๋ก ์ด ์์๋ก ์คํ๋์ด ์์ชฝ ๋ค ์ด๊ธฐํ๋ ์ํ์์ ์ฑ๊ธํค์ ๊ฐ์ฒด๊ฐ ๋ฑ๋ก๋๊ฒ ๋จ.
ScriptExecutionOrder๋ฅผ ์ ํ์ฉํด๋ณด๊ฒ ์ต๋๋ค. ์กฐ์ธ ๊ฐ์ฌํฉ๋๋ค!
์ฒ์์ ์ฑ๊ธํค๋ค ์น ๋๋ ค์ ์ด๊ธฐํ ์ํค๋ ๊ฑธ๋ก ํด๊ฒฐ ๋๋ ๊ฑฐ๋ฉด RuntimeInitializeOnLoadMethod
์ฌ์ ์๋ ์ค๋ธ์ ํธ๋ฅผ ์ฐธ์กฐํด๋์ ์ฑ๊ธํค์ด ์๋๋ฐ, ํด๋น ์ฑ๊ธํค์ BeforeSceneLoad๋ฅผ ์จ๋ ์์ฉ์ด ์๊ฒ ์ฃ ...? ์ฌ์ด ๋ก๋ฉ์ด ์๋์ด ์๋ค ๋ณด๋๊น...
๋๋ ๊ทธ๋์ ๋งค๋์ ๋ผ๊ณ ํ๋ ์ ๋ํฐ ๊ฐ์ฒด๋ ์ฑ๊ธํค ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ๋๊ณ ๋ด ์ฑ๊ธํค์ ๋งค๋์ ๋ฅผ ๊ฐ์ผ ๋ํผํด๋์ค๋ก ์ง์ ํ ์๋ฏธ์ ์ฑ๊ธํค ๊ฐ์ฒด๊ณ ๊ทธ๊ฒ ๋งค๋์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ชจ์์ ์๋ ํผ์์คํดํธ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฆ
์ฑ๊ธํค์ ์ฐธ์กฐํ๋ ์ฑ๊ธํค์ ๋ง๋๋๊ฑด๊ฐ๋ณด๊ตฐ์... ์ฐธ๊ณ ํ๊ฒ ์ต๋๋ค!! ๊ฐ์ฌํฉ๋๋ค
๋ ๊ทธ๋์ Scene ๋ค์ด๊ฐ ๋ ์ด๊ธฐํ๋ฅผ ์์ผ์ฃผ๋ ๊ฐ์ฒด๊ฐ ๋ฐ๋ก์์ ๊ฑฐ๊ธฐ์ Initialize๋ฅผ call ํด์ฃผ๋ฉด์ ์๋ก ์์กด์ฑ์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ํด๊ฒฐํด์ค
Initialize๋ ํจ์ ์ด๋ฆ์ธ๊ฑด๊ฐ์? ๋ญ๊ฐ ์ฐพ์๋ณด๋๋ฐ ์ ๋ณด๊ฐ ๋ง์ด ์๋ค์... Instantiate์ฒ๋ผ ํธ์ถํ๋ฉด ๋๋๊ฑธ๊น์??
๋๋ ์๋น์ค ๋ก์ผ์ดํฐ ์ ์ฉํจ. ์๋น์ค ๋ก์ผ์ดํฐ๋ง ์ ์ ์ผ๋ก ๋๊ณ ๋๋จธ์ง ์๋น์ค๋ ์ผ๋ฐ ๊ฐ์ฒด๋ก ๋ . ๊ฒ์ ์์์ ํญ์ startup ์ฌ์์ ๋น ๊ฒ์์ค๋ธ์ ํธ์ Bootstrapper ์ปดํฌ๋ํธ ๋ฌ์๋๊ณ ์๋น์ค ๋ฑ๋ก ๋ฐ ์ด๊ธฐํ ์์ ์ ์ํํจ. ๋ค ์ํํ๋ฉด ๋ฉ์ธํ๋ฉด ์ฌ ๋ก๋ํจ. ์ด๋ ๊ฒ ํ๋ฉด ์๋น์ค ๊ฐ ์ด๊ธฐํ ์์ ์ ์ดํ๊ธฐ๋ ํธํจ. ์ธํฐํ์ด์ค๋ก ๋ชจํน ๊ฐ์ฒด ๋ง๋ค์ด์ ํ ์คํธ์ฉ ๊ฒ์ ๋๋ฆฌ๊ธฐ๋ ์ฌ์. - dc App
๋ฐ๋ก ์๋ ๋ง์ด๋ ๊ฑฐ์ ๊ฐ์. - dc App