viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec8ffa11d0283137a147df66c0ff0e9ff48d5b5d7d56d2581fa5d4cf9658176ace44a0a6a5fbd3e37342abfd2a197645be1a391afd76a43a3cd38e


๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ๋‹ˆํ‹ฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” C# ์‹ฑ๊ธ€ํ„ด.


(๋””์‹œ๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ์˜ ์ฝ”๋“œ๋ธ”๋Ÿญ๊ฐ™์€๊ฒŒ ์—†์–ด์„œ ๊ฑ ๋‚ด๊ฐ€ ์“ฐ๊ณ ์„œ ์บก์ณํ•ด์˜ด ใ……ใ…‚)


์ฐธ๊ณ ๋กœ ์œ„ ์ฝ”๋“œ๋Š” Lazy Initialization(๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”)๋ฅผ ์ ์šฉํ•œ ๋ฐฉ์‹์ธ๋ฐ ์ด๊ฑฐ๋Š” ์•„๋ž˜์—์„œ ์„ค๋ช…ํ•จ



class UIManager : Singleton<UIManager> { } ์ฒ˜๋Ÿผ ์‹ฑ๊ธ€ํ„ด์„ ์ƒ์†๋ฐ›์€ UIManager ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ 


๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” UIManager.Instance.ShowStatus() ์ด๋Ÿฐ ์‹์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.



ํ”ํžˆ๋“ค ์‹ฑ๊ธ€ํ„ด์€ ์•ˆํ‹ฐํŒจํ„ด์ด๋‹ค ๋ญ๋‹ค ํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง€์–‘ํ•ด์•ผํ•˜๋Š” ์ฝ”๋“œ๋ผ๊ณ  ๋งŽ์ด ํ•จ


์ผ๋‹จ ์žฅ์ ์— ๋Œ€ํ•ด์„œ๋Š” ๋”ฐ๋กœ ์„ค๋ช… ์•ˆํ•˜๊ฒ ์Œ. ๊ตฌ๊ธ€๋งํ•˜๋ฉด ๋‚˜์˜ค๋Š” ๋Œ€ํ‘œ์ ์ธ ๋‹จ์  ์„ธ ๊ฐ€์ง€์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋ฐ•ํ•ด๋ด„.



(1) ๊ฐ์ฒด์ง€ํ–ฅ ์›์น™์ด ํŒŒ๊ดด๋œ๋‹ค. ํด๋ž˜์Šค๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ ธ์„œ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ด๋ฃจ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ๋ชจ๋“ˆํ™”์— ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.


๋งž๋Š” ๋ง์ด๊ธดํ•จ. ์ œ์ผ ํฐ ๋‹จ์ ์ž„. ์‹ฑ๊ธ€ํ„ด ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ณด๋‹ˆ


A์—์„œ B์ ‘๊ทผ, B์—์„œ C์ ‘๊ทผ, C์—์„œ A์ ‘๊ทผ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธดํ•จ


๊ทผ๋ฐ ํด๋ž˜์Šค ๊ฐ„์˜ ์˜์กด์„ฑ์€ ๊ตณ์ด ์‹ฑ๊ธ€ํ„ด์ด ์•„๋‹ˆ์–ด๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค๋ ฅ์— ๋”ฐ๋ผ์„œ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์›์ฒœ ์ฐจ๋‹จ๋  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•จ




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec8ffa11d0283137a147df66c0ff0e9ff48d5b5d7d56d2581fa5d4cf9658176ace44a0a6a5fbd3e37342abfd2a197647be4c3b13a071a5515b8c7b


์˜ˆ๋ฅผ ๋“ค์–ด์„œ, ์‹ฑ๊ธ€ํ„ด ํด๋ž˜์Šค์ธ UIManager์— UpdateStatusUI()๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค์น˜์ž.


ํ”Œ๋ ˆ์ด์–ด์˜ HP, MP๋ฅผ ํ‘œ์‹œํ•˜๋Š” UI๋ฅผ ๊ฐฑ์‹ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ž„.


์ด UpdateStatusUI ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋˜ ๋‹ค๋ฅธ ์‹ฑ๊ธ€ํ„ด ํด๋ž˜์Šค์ธ PlayerStats์— ์ ‘๊ทผํ•˜๊ธฐ ๋ณด๋‹ค๋Š”



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec8ffa11d0283137a147df66c0ff0e9ff48d5b5d7d56d2581fa5d4cf9658176ace44a0a6a5fbd3e37342abfd2a197616ea1a6940fb72a03a4df878


์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ”๊พธ๋ ค๋Š” ์Šคํ…Ÿ์˜ key(HP์ธ์ง€ MP์ธ์ง€)์™€ value๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž„


์•„์ฃผ ๋‹จ์ˆœํ•œ ์˜ˆ์‹œ๊ธดํ•œ๋ฐ '์‹ฑ๊ธ€ํ„ด ํด๋ž˜์Šค ์•ˆ์—์„œ๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ์ ˆ๋Œ€ ์ ‘๊ทผํ•˜์ง€ ์•Š๋Š”๋‹ค'๋ผ๋Š”


์›์น™์„ ์ง€ํ‚จ๋‹ค๋ฉด ๊ฒฐํ•ฉ๋„, ์˜์กด์„ฑ ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ํฌ๊ฒŒ ์—†์„๊ฑฐ๋ผ๊ณ  ๋ด„.




(2) ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค.


๋‹จ์œ„ ํ…Œ์ŠคํŠธ? ๋Œ€์ถฉ์€ ์•Œ์ง€๋งŒ ํ•ด๋ณธ์ ์€ ์—†์–ด์„œ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ดค๋‹ค.


A ํ•จ์ˆ˜๋ฅผ ํ…Œ์ŠคํŠธํ•จ์— ์žˆ์–ด์„œ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ B ํ•จ์ˆ˜๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์˜ํ–ฅ์„ ๋ผ์น˜๋ฉด ์•ˆ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.


๊ทผ๋ฐ ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์„ ์“ฐ๋ฉด ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.


์˜ˆ๋ฅผ ๋“ค์–ด, UIManager๋ฅผ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๋ฉด


A ํ•จ์ˆ˜์—์„œ new UIManager๋ฅผ ์ƒ์„ฑ(์ธ์Šคํ„ด์Šคํ™”)ํ•ด์„œ ์‹คํ–‰ํ•ด๋ณด๊ณ , B์—์„œ๋„ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์„œ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋์ธ๋ฐ


UIManager๊ฐ€ ์‹ฑ๊ธ€ํ„ด์ด๋ฉด A ํ•จ์ˆ˜์—์„œ UIManager์˜ ๋ณ€์ˆ˜๋ฅผ ์กฐ์ž‘ํ•œ ๊ฒƒ์ด B์—์„œ UIManager์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ทธ๋Œ€๋กœ ์œ ์ง€๊ฐ€ ๋˜์–ด์žˆ๋‹ค.


์Œ... ์ด๋Ÿฐ๊ฒŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ผ๊ณ ๋Š” ํ•˜๋Š”๋ฐ...


์ŠคํŠœ๋””์˜ค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋””๋ฒ„๊น…๋งŒ์œผ๋กœ๋„ ๋ถ€์กฑํ•ด์„œ ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์น˜๋Š”, ๊ฒŒ์ž„์ด ์•„๋‹Œ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ


์ผ๋ฐ˜์ ์ธ ์ธ๋”” ๊ฒŒ์ž„์—์„œ๋Š” ์ด๋Ÿฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€ ์‹ถ๋‹ค.


๊ฒฐ๊ตญ ์‹ฑ๊ธ€ํ„ด์„ ์“ฐ์ง€ ๋ง์•„์•ผํ•˜๋Š” ์ด์œ ๋กœ์„œ๋Š” ํ˜„์‹ค์„ฑ์ด ๋–จ์–ด์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.




(3) ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.


์˜ˆ๋ฅผ ๋“ค์–ด A ์“ฐ๋ ˆ๋“œ์™€ B ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ๊ฐ์ฒด์ธ UIManager์— ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด?


๋ญ ์ด๋Ÿฐ๊ฑฐ ๋•Œ๋ฌธ์— ์‹ฑ๊ธ€ํ„ด ํด๋ž˜์Šค ์•ˆ์—์„œ Instance๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜(get)์— lock์„ ๊ฑธ๊ธฐ๋„ ํ•˜๋Š”๋ฐ


์ค‘์š”ํ•œ๊ฑด ๋Œ€๋ถ€๋ถ„ ์œ ๋‹ˆํ‹ฐ์—์„œ ์‹ฑ๊ธ€ํ„ด ํด๋ž˜์Šค๋Š” MonoBehavior๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋งŒ๋“ ๋‹ค.


๋ชจ๋…ธ๋Š” ์œ ๋‹ˆํ‹ฐ์˜ ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ(Awake, Start, Update ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๋“ค ์‹คํ–‰ํ•˜๋Š” ๊ทธ ๋…€์„)์—์„œ ๋Œ๊ธฐ ๋•Œ๋ฌธ์—


๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•  ๋ฌธ์ œ๋“ค์€ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.


'์œ ๋‹ˆํ‹ฐ๋Š” ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋ฅผ ์ „ํ˜€ ๊ณ ๋ ค์•ˆํ•ด๋„ ๋œ๋‹ค'๋ผ๋Š” ๋ง์ด ์—ฌ๊ธฐ์„œ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๊ณ 


์ด ์—ญ์‹œ ์‹ฑ๊ธ€ํ„ด์„ ์“ฐ๋Š”๋ฐ์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง„ ์•Š๋Š”๋‹ค.




(4) ๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”


๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์˜ˆ์‹œ๋กœ ์˜ฌ๋ ค๋†“์€ ์ฝ”๋“œ๋Š” ๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”(์ตœ์ดˆ Instance ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๊ทธ์ œ์„œ์•ผ ๊ฐ์ฒด ์ƒ์„ฑ)๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์˜ ์‹ฑ๊ธ€ํ„ด์ธ๋ฐ


์ฒ˜์Œ์—๋Š” ๋ญฃ๋„ ๋ชจ๋ฅด๊ณ  ์ผ์—ˆ๋Š”๋ฐ ์š”์ฆ˜์—๋Š” ์“ฐ์ž˜๋ฐ๊ธฐ ์—†๋‹ค๊ณ  ๋А๊ผˆ์Œ


๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋ฉด ์žฅ์ ์ด๋‹ค๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ๋“ค์ด ์ฃผ๋กœ



(1) ์ด ์‹ฑ๊ธ€ํ„ด ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•˜์ง€ ์•Š์Œ


๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š์„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋ผ๊ณ  ํ•˜๋Š”๋ฐ.. ๊ณผ์—ฐ ํ˜„์‹ค์ ์ธ๊ฐ€? ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋Š”๊ฑด


๊ทธ๋งŒํผ ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋ผ๋ฉด ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋งŒ๋“œ๋Š”๊ฑฐ ์ž์ฒด๊ฐ€ ๋น„ํšจ์œจ์ ์ธ๊ฑฐ๊ฐ™์Œ



(2) Hierarchy ๋ทฐ๊ฐ€ ๊น”๋”ํ•ด์ง.


์‚ฌ์‹ค ๋‚˜๋„ ์ด๊ฑฐ ๋•Œ๋ฌธ์— ์ผ์—ˆ์Œ.. ์”ฌ ์•ˆ์— ๋นˆ ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋งŒ๋“ค๊ณ  ๋ฌด์Šจ ๋งค๋‹ˆ์ €, ๋ฌด์Šจ ๋งค๋‹ˆ์ €


๋ถ™์—ฌ๋†“๋Š”๊ฑฐ ์ž์ฒด๊ฐ€ ์ข€ ํด๋ฆฐํ•ด๋ณด์ด์ง€ ์•Š์•˜์—ˆ์Œ..


๊ทผ๋ฐ ๋’ค๋Šฆ๊ฒŒ ์‹ฑ๊ธ€ํ„ด ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋‹ค๊ฐ€ ์—ฌ๊ธฐ์„œ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด ์ด๊ฑฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋Š”??


๋ณดํ†ต ๋‹ค์Œ ์”ฌ์œผ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ๊ฒŒ์ž„์„ ๋ฉˆ์ถฐ๋†“๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์‹œ๊ฐ„์„ ๋”ฐ๋กœ ํ• ๋‹นํ•˜๋Š”๋ฐ


์—ฌ๊ธฐ์— ์‹ฑ๊ธ€ํ„ด ๊ฐ์ฒด๋ฅผ ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค?


๋ฌผ๋ก  ์‹ฑ๊ธ€ํ„ด ๊ฐ์ฒด๊ฐ€ ๋งค์šฐ ๊ฐ€๋ณ๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š”๋ฐ ์ง€์—ฐ์‹œ๊ฐ„์ด ์ƒ๊ธธ ๊ฐ€๋Šฅ์„ฑ์ด 0%๋ผ๋ฉด ๋…ธ์ƒ๊ด€์ด์ง€๋งŒ


์ดˆ๊ธฐํ™” ํ•จ์ˆ˜(์ƒ์„ฑ์ž ํ•จ์ˆ˜)์— ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ๊ฐ™์€๊ฒŒ ์žˆ๋‹ค๋ฉด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๋”ฐ๋กœ ํ•ด์ค˜์•ผํ•จ


๊ฒฐ๊ตญ์— ์œ ์ € ์ž…์žฅ์—์„œ๋Š” ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ํด๋ฆญํ–ˆ๋”๋‹ˆ ๊ฒŒ์ž„์ด ๋ฉˆ์ถ˜๊ฑด ์•„๋‹Œ๋ฐ 2์ดˆ๋™์•ˆ ๋กœ๋”ฉ UI๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝํ—˜์„ ํ•ด์•ผํ•จ



์•„๋ฌดํŠผ ์‹ฑ๊ธ€ํ„ด์„ ๋‹จ์ˆœํžˆ ์“ธ ๋•Œ๋„ ์˜์™ธ๋กœ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ณ ๋ฏผ์€ ํ•ด๋ด์•ผํ•จ