TIL
[TIL] 내일배움캠프_Unity 개인과제 Inventory (feat.델리게이트, 이벤트)
Hwone
2023. 9. 20. 19:47
인벤토리 구현중에 UI 와 인벤토리를 분리하여 장착패널의 버튼을 누르면 인벤토리에게 알려주기 위해 델리게이트를 사용하려 하는 도중 개념이 헷갈려서 제대로 알고 사용하기위해 델리게이트와 이벤트에 대해 복습을 하게 되었다
- Delegate
값이 아닌 코드 자체를 넘기고 싶을 때 사용하고 보통 콜백 용도로 쓰인다
- evnet
프로그래밍에 어떤 일이 생겼을 때 실행되는 객체로 delegate를 event 한정자로 수식해서 만들고 보통 객체의 상태 변화, 사건의 발생을 알리는 용도로 사용한다
차이점
- 이벤트는 인터페이스 내부에 선언할 수 있지만 델리게이트는 선언할 수 없다
- 이벤트는 public 으로 선언되어 있어도, 자신이 선언되어 있는 클래스 외부에서 호출할 수 없다
(이벤트 기반 프로그래밍에서 안정성을 추구하는 것으로, 클래스 외부에서 이벤트에 변화를 줄 수 없게 하기 위함이다)
요즘 계속 event를 사용해서 그런가 당연히 event를 사용하면 될 줄 알았다 하지만 클래스 외부에서 이벤트를 호출할 수 없기 때문에 오류가 났던 것 그래서 이벤트를 쓰지 않고 델리게이트를 사용하여 버튼이 눌리면 인벤토리에게 알려줄 수 있게 만들었다
또한, 사용자 정의 델리게이트 대신 사용할 수 있고 나는 반환값이 필요없는 미리 정의되어 있는 Action을 이용하여 간단하게 델리게이트를 사용하였다