[ 개발 일기 ] 반환형을 가지는 Delegate에 대해서 in Unity
2024. 7. 18. 16:00ㆍ게임 개발/개발 일기
C# Unity에서 개발을 하던 도중 float을 반환하는 Delegate를 만들었는데 event를 사용해
Delegate에 여러 메서드를 추가하면 리턴하는 값은 무엇인지에 대해서 궁금해서 한 번 테스트해보았다.
public delegate float CalcNum(int a);
public class DelegateTest : MonoBehaviour
{
public event CalcNum OnCalcNumEvent;
private void Awake()
{
OnCalcNumEvent += HandlePlusB;
OnCalcNumEvent += HandlePlusA;
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
Debug.Log(OnCalcNumEvent?.Invoke(1));
}
}
private float HandlePlusA(int a)
{
return a + 10f;
}
private float HandlePlusB(int a)
{
return a + 20f;
}
}
이러한 형식으로 했을 경우
맨 마지막으로 추가한 메서드의 반환값이 리턴된다.
Awake를 보면 HandlePlusA를 제일 마지막에 넣어주니 반환값은 11이 된다.
만약 여기서 이벤트 등록한 모든 메서드의 반환값을 알고 싶다면
Update 안에 if 문 안에다가 이 코드를 넣어주면 된다.
foreach(CalcNum a in OnCalcNumEvent.GetInvocationList())
{
Debug.Log(a.Invoke(1));
}
그렇게 하면 B가 먼저 나오고 A가 나오게 된다.
'게임 개발 > 개발 일기' 카테고리의 다른 글
[ 개발 일기 ] Drop The Chicken 모바일 출시 작업 중 (2) | 2024.09.04 |
---|---|
[ 개발 일기 ] ChickenFly 다시 개발 진행 (0) | 2024.08.09 |
[ 개발 일기 ] Post Processing 내부 값 코드로 바꾸는 방법 (0) | 2024.06.13 |
[ 개발 일기 ] Screen Space - Camera UI에 PP가 적용되지 않도록 하는 방법 (0) | 2024.06.12 |
[ 개발 일기 ] FSM은 어렵다 (0) | 2024.05.29 |