A๋ผ๋ ๋งค๋์ ํด๋์ค๊ฐ ์๊ณ , B๋ผ๋ ํด๋์ค๊ฐ ์๋ค๊ณ ํ ๋
A์์ space bar ํค๋ฅผ ๋๋ฅด๋ฉด B์ ์๋ B_Number ๋ผ๋ ๋ณ์๋ฅผ Aํด๋์ค์ ์ A_Number ๊ฐ์ผ๋ก ๋ณ๊ฒฝ ์ํค๋ ค๊ณ ํฉ๋๋ค.
์ ๊ฐ ์ง๊ธ ๋๋ฆฌ์ ์ด๋ฒคํธ๋ฅผ ์์ ๋ชจ๋ฅด์ง๋ง ์ง๊ธ ํ๋ ๋ฐฉ์์ผ๋ก๋ Bํด๋์ค์ ํจ์๋ฅผ ๋ง๋ค๊ณ OnEnable, OnDisable์ ๋ฑ๋ก ๋ฐ ํด์ ๋ง ํ๊ณ ,ย A ๋งค๋์ ํด๋์ค์์ ์ด๋ฒคํธ ํธ์ถ์ ํ๊ณ ์๋๋ฐ์.
์ด๊ฑฐ๋ฅผ Bํด๋์ค์์ ํจ์๋ฅผ ์๋ง๋ค๊ณ A๋งค๋์ ํด๋์ค์์ ํจ์๋ฅผ ๋ง๋ค์ด์ B์์ ๋ฑ๋ก ๋ฐ ํด์ ๋ง ํด์ ์ด๋ฒคํธ๋ฅผ ํธ์ถ
ํ ์๋ ์์๊น์??
//////////////////// ํ์ฌ ์ฐ๊ณ ์๋ ๋ฐฉ๋ฒ
Class A ย (๋งค๋์ ํด๋์ค ์ฑํดํค)
public int A_Number = 5;
public delegate void Del();
public event Del Evt;
Start(){ย // ์คํ์ด์ค๋ฐ ๋๋ฅด๋ฉด ์ด๋ฒคํธ ๋ฐ์
if(input.getkeydown(keycode.space)) Evt();
}ย
Class B
public int B_Number = 0;
Start(){
B_Number = Random.Range(0,10); // 0 ~9 ๊น์ง์ ๋๋ค ๊ฐ
}
OnEnable(){
ย A.Instance.Evt += Func;
}
OnDisable(){
ย A.Instance.Evt -= Func;
}
void Func(){
ย B_Number = A.Instance.A_Number;
}
//////////////////////////
์ด๋ ๊ฒ Bํด๋์ค์ Func๋ฅผ ์๋ง๋ค๊ณ Aํด๋์ค์์ Func๋ฅผ ๋ง๋ค๊ฒฝ์ฐ Bํด๋์ค์ B_Number ๊ฐ์ ์ด๋ป๊ฒ ๋๊ฒจ์ฃผ๋์??
-> Bํด๋์ค์ OnEnable ์ ์ผ๋จ A.Instance.Evt += A.Instance.Func; ๋ก ์์ ๋ฉ๋๋ค.
-> Bํด๋์ค๋ฅผ ์ปดํผ๋ํธ๋ก ๊ฐ์ง ์ค๋ธ์ ํธ๋ ์ฌ๋ฌ๊ฐ ์กด์ฌํ๋ฉฐ, A ํด๋์ค๋ ํ๋๋ง ์กด์ฌํฉ๋๋ค
A๊ฐ ๋งค๋์ ๋๊น A์์ B์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ์ - dc App