๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

 

Unity ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๊ฐ€ MonoBehaviour ํด๋ž˜์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” "SendMessage()"์™€ "BroadcastMessage()" ๊ธฐ๋Šฅ์„ ๋ดค๋‹ค.

์œ„ ํ•จ์ˆ˜๋“ค์„ ์ด์šฉํ•˜์—ฌ, ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์— ๋ถ™์€ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์˜ ํ•จ์ˆ˜๋ฅผ ์ด๋ฆ„์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„ , ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์— ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, "SendMessage()"์™€ "BroadcastMessage()"๋Š” ์‹คํ–‰ํ•  ํ•จ์ˆ˜์˜ ์ด๋ฆ„๋งŒ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ฐธ์กฐ ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 

 

 

SendMessage()

 

๋‹ค์Œ์€ Unity API Documentation์— ์ ํ˜€์žˆ๋Š”  ํ•จ์ˆ˜์˜ ์›ํ˜•์ด๋‹ค. 

public void SendMessage(string methodName,
                        object value = null,
                        SendMessageOptions options = SendMessageOptions.RequireReceiver);
  • methodName  :  ์‹คํ–‰ํ•  ํ•จ์ˆ˜์˜ ์ด๋ฆ„
  • value  :  ์‹คํ–‰ํ•  ํ•จ์ˆ˜๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, ์ „๋‹ฌํ•ด์ค„ ๊ฐ’
  • options  :  ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ต์…˜
    • RequireReceiver  :  SendMessage์— ๋Œ€ํ•œ ์ˆ˜์‹ ์ž๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
    • DontRequireReceiver  :  SendMessage์— ๋Œ€ํ•œ ์ˆ˜์‹ ์ž๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
      • methodName ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๊ฐ€ ์ปดํฌ๋„ŒํŠธ์— ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋‹ค์Œ ์ปดํฌ๋„ŒํŠธ๋กœ ์ด๋™ํ•ด methodName ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.

 

์ฆ‰, SendMessage๋Š” ํ•˜๋‚˜์˜ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์— ๋ถ™์–ด์žˆ๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— ๊ฑธ์ณ ์ง€์ •๋œ ํ•จ์ˆ˜๋ฅผ ์ฐพ์•„์„œ ํ˜ธ์ถœํ•œ๋‹ค.

 

 

BroadcastMessage()

 

public void BroadcastMessage(string methodName,
                             object parameter = null,
                             SendMessageOptions options = SendMessageOptions.RequireReceiver);

 

๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ์€ SendMessage์™€ ๊ฐ™๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š๋ƒ?

BroadcastMessage๋Š” ํ•ด๋‹น ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์˜ ์ž์‹ ์˜ค๋ธŒ์ ํŠธ๊นŒ์ง€๋„ ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.

 

์ฆ‰, BroadcastMessage()๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜„์žฌ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ ๋‚ด์˜ ์ปดํฌ๋„ŒํŠธ๋“ค ์‚ฌ์ด์—์„œ ์ฐพ๊ณ , ๊ทธ ๋‹ค์Œ ์ž์‹ ์˜ค๋ธŒ์ ํŠธ๊นŒ์ง€ ์ฐพ์•„๋“ค์–ด๊ฐ€๋ฉด์„œ ์žฌ๊ท€์ ์œผ๋กœ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

UI ๊ฐ™์€ ๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•˜์ง€ ์•Š์„๊นŒ๋ž€ ์ƒ๊ฐ์ด ๋“ค๊ธด ํ•œ๋‹ค. (UI๋Š” Canvas ๋ฐ‘์— ์—ฌ๋Ÿฌ UI ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋‹ฌ๊ธฐ ๋•Œ๋ฌธ์—)

 

 

 

์ฃผ์˜ํ•  ์ 

SendMessage์™€ BroadcastMessage๋Š” ์˜ค๋ธŒ์ ํŠธ ํ˜น์€ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ํ†ต์‹ ์„ ์ˆ˜์›”ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋ฐฉ์‹์ด๋‹ค. ํ•˜์ง€๋งŒ, SendMessage์™€ BroadcastMessage๋Š” ๋ชจ๋‘ ๋‚ด๋ถ€์ ์œผ๋กœ C#์˜ ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)์ด๋ผ๋Š” ๊ธฐ๋Šฅ์— ์˜์กดํ•œ๋‹ค.

 

๋ฌธ์ž์—ด์„ ์ด์šฉํ•ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰ ์ค‘์— ์Šค์Šค๋กœ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๊ณผ์ •์ด ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ณด๋‹ค ๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ์„ ํ•„์š”๋กœ ํ•œ๋‹ค.

ํŠนํžˆ, Update ์ด๋ฒคํŠธ๋‚˜ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„ ๊ธฐ๋ฐ˜์˜ ํ˜ธ์ถœ ์•ˆ์—์„œ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ƒ๋‹นํ•˜๊ฒŒ ์ผ์œผํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, ํ•„์š”ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉ ๋นˆ๋„๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„ ๋ณด์ธ๋‹ค.

 

 

 

  • ์ด ๊ธ€์€ <์œ ๋‹ˆํ‹ฐ C# ์Šคํฌ๋ฆฝํŒ… ๋งˆ์Šคํ„ฐํ•˜๊ธฐ> ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•