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# ์คํฌ๋ฆฝํ ๋ง์คํฐํ๊ธฐ> ์ฑ ์ ๋ฐํ์ผ๋ก ๊ณต๋ถํ ๊ธ์ ๋๋ค.