Unreal Engine/etc.
[Unreal Engine 4 etc.] 이벤트 디스패처, 인터페이스, 맴버함수 호출의 차이점
한돌이
2020. 11. 23. 14:24
이벤트 - 델리게이트(콜백) 함수.
플레이어가 죽었다고 알릴 경우 이를 인지한 주변의 적들의 행동을 멈추게 할 때 사용합니다.
이 경우 이벤트 디스패처를 호출한 쪽이 플레이어, 받는 쪽이 주변의 적들입니다. 받는 쪽이 불특정 다수이며 그냥 호출만으로 반응시키고 싶을 때는 받는 쪽에서 이를 이벤트로 구현하는 방식입니다.
적들은 계속 플레이어의 상태를 체크할 필요가 없어지며, 플레이어도 적들이 플레이어의 죽음을 체크하는지 확인할 필요가 없습니다.
인터페이스
인터페이스를 상속받은 액터는 형번환을 하지 않고 인터페이스 콜방식으로 액터에 호출만 해주면 반응합니다.
이 때 인터페이스를 상속받은 액터에서 해당 인터페이스 함수를 오버라이딩하여 구현하였다면 해당 함수를 호출했을 때 반응하고, 구현을 하지 않았다면 반응하지 않습니다. 구현 안한 상태에서 호출하였다고 오류를 뱉지 않습니다.
인터페이스의 좋은 예시로는 리모콘이 있습니다. 리모콘의 전원 버튼을 눌렀을 때 해당 리모콘과 연결된 기기의 전원이 켜지거나 꺼지는 반응하는 것처럼 리모콘도 하나의 인터페이스라 할 수 있습니다.
클래스 내에 구현한 맴버함수 호출
해당 클래스 객체 타입에 접근해야만 해당 함수를 호출할 수 있습니다. 이 때문에 형변환을 합니다.
해당 함수를 구현하지 않은 상태에서 호출하는 것 자체가 불가능하고 찾지도 못합니다.
한들어 놓은 함수를 외부에서 사용하다가 해당 함수를 제거 혹은 파라미터 값 변경 등이 일어나면 컴파일 오류를 뱉습니다.
출처