//delegate 리턴타입 델리게이트명(매개변수)
public delegate void PrintInfoDel();
void Start()
{
PrintInfoDel printInfoDel;
}
public delegate int TestDel(int valueA, int valueB);
int Sum(int A, int B)
{
return A + B;
}
void Start()
{
TestDel testDel;
testDel = Sum;
}
public delegate 데이터타입 이름(변수 ... ) 이건 채용 공고같은 것. 조건이다.
함수를 대신 실행해주는 녀석이다!
어떠한 처리 A와 B 사이에 내가 실행하고 싶은 처리가 있을 때 사용해줌.
public void TestPrint(PrintInfoDel del)
{
Debug.Log("처리A");
del();
Debug.Log("처리B);
}
외부에서 코드가 들어와 유연하게 바뀌는 걸 콜백 이라 부르는 듯?
=====정리=====
public class TestScript : MonoBehaviour
{
public delegate int PrintNum();
public delegate int AvgNum(int numA, int numB);
public void TestPrintNum(PrintNum del)
{
Debug.Log("처리 A");
del(); // 이러면 실행된다!! 콘솔창 출력 원할 시 Debug.Log(del()); 하면 됨
Debug.Log("처리B");
}
public void TestPrintAvg(AvgNum del)
{
Debug.Log("처리A");
del();
Debug.Log("처리B");
}
public int PrintInfo()
{
return 10;
}
public int AverageNum(int numA, int numB)
{
return (numA + numB) / 2;
}
private void Start()
{
TestPrintNum(PrintInfo);
TestPrintAvg(AverageNum);
}
}
DelegateChain += FuncOne;
DelegateChain += FuncTwo;
Progress(DelChain)
다음 DelChain은 one과 two가 더해져서 나옴
DelegateChain -=FuncOne;
빼는 것도 가능
'C#' 카테고리의 다른 글
Event (0) | 2022.06.20 |
---|---|
Delegate - Action, Func (0) | 2022.06.20 |
base.Awake(); (0) | 2022.06.16 |
싱글턴 패턴 (0) | 2022.06.15 |
일반화 (0) | 2022.06.15 |