๊ทธ๋ƒฅ ์ ๋‹นํžˆ DebugScript ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ


[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]

static void InitData()

{

ResourceManager.Instance.InitData();

SystemManager.Instance.InitData();

...

}

๋”ฑ ์š”๊ฑฐ ํ•˜๋‚˜ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค....

์˜ˆ์‹œ๋Œ€๋กœ ์‹ฑํดํ†ค ํด๋ž˜์Šค์— ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ•จ์ˆ˜ ๋„ฃ๊ณ  ๊ฑฐ๊ธฐ์— ๋ฏธ๋ฆฌ ๋””ํดํŠธ๊ฐ’ ๋„ฃ์–ด๋†“์œผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค.


๋ณดํ†ต ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์“ฐ๊ณ  ํ…Œ์ŠคํŠธํ• ๋•Œ ์—๋Ÿฌ๋‚˜๋Š” ์ด์œ ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณธ๋‹ค.


A์”ฌ๊ณผ B์”ฌ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ 


A์”ฌ์—์„œ ์บ๋ฆญํ„ฐ ์„ ํƒ > B์”ฌ์—์„œ ํ•ด๋‹น ์บ๋ฆญํ„ฐ๋กœ ์ „ํˆฌํ•˜๋Š” ๊ฒŒ์ž„์„ ๋งŒ๋“ค์—ˆ๋‹ค ์น˜์ž


A์”ฌ์—์„œ ์„ ํƒ๋œ ์บ๋ฆญํ„ฐ๋ฅผ ์บ๋ฆญํ„ฐ๋งค๋‹ˆ์ €์— ์ง‘์–ด๋„ฃ๊ณ  B์”ฌ์—์„œ ์บ๋ฆญํ„ฐ๋งค๋‹ˆ์ €์— ์„ ํƒ๋œ ์บ๋ฆญํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค์น˜์ž.


A์”ฌ ์ œ์ž‘์„ ์™„๋ฃŒํ•˜๊ณ  B์”ฌ์œผ๋กœ ๋„˜์–ด๊ฐ€์„œ ์ „ํˆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  B์”ฌ์—์„œ ๋ฐ”๋กœ ์‹œ์ž‘์„ ํ•œ๋‹ค.


๋‹น์—ฐํžˆ B์”ฌ์—์„œ๋Š” ์‹œ์ž‘ํ•˜๋ฉด์„œ ์บ๋ฆญํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ์œ„ํ•ด ๋Œ€์ถฉ Character character = CharacterManager.Instance.GetCharacter(); ์ด๋Ÿฐํ˜•์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด๋†จ์„๊ฒƒ์ด๋‹ค.


๊ทผ๋ฐ A์”ฌ์—์„œ ์‹œ์ž‘ํ•œ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ๋•Œ๋ฌธ์— ์บ๋ฆญํ„ฐ๋งค๋‹ˆ์ €์˜ character == null ์ผ๊ฒƒ์ด๊ณ  ๊ทธ ๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


๊ทธ๋ž˜์„œ ๋ˆˆ๋ฌผ์„ ๋จธ๊ธˆ๊ณ  A์”ฌ์œผ๋กœ ๋Œ์•„๊ฐ€ A์”ฌ์„ ์‹คํ–‰ํ•ด์„œ ์บ๋ฆญํ„ฐ๋ฅผ ์„ ํƒ ํ›„ B์”ฌ์œผ๋กœ ๋„˜์–ด๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ฒŒ๋œ๋‹ค...


๋ณดํ†ต ์ด ๋•Œ๋ฌธ์— ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ ์œ„์˜ ์˜ˆ์‹œ์˜


[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]๋ผ๋Š”๊ฑฐ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์”ฌ์„ ๋กœ๋“œํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


์ฆ‰ CharacterManager ํด๋ž˜์Šค์— InitData() ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋†“๊ณ  ๊ฑฐ๊ธฐ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ๋งŒ๋“ค์–ด๋‘๋ฉด ์•„๋ฌด ๋ฌธ์ œ ์—†์ด B์”ฌ์—์„œ ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.