Interface
- 객체가 반드시 구현해야할 행동을 지정하는데 활용되는 타입
- 다형성의 구현과 의존성 분리 설계에 유용하게 활용된다.
Unreal에서 Interface 예시
- World에 배치되는 모든 오브젝트 -> Actor
- 움직이는 오브젝트 -> Pawn - 즉, Pawn은 Actor 중에 Pawn으로서 움직임을 구현해야한다.
- Pawn은 INavAgnentInterface를 통해 길찾기 시스템이 구현되어야 한다.
구현될 때 예시
- Person 안에 Student, Staff, Teacher가 있다.
- Student와 Teacher는 수업에 반드시 참여해야하며, Staff는 참여가 불가하다.
- 그렇다면 Student와 Teacher는 Lesson Inteface를 통해 수업과 관련된 내용을 작성해주면 된다.
- 수업에 참여 가능한지 알아내기 위해서 Cast<ILesson>을 통해 알 수 있다. 불가하면 Cast 시 null값을 반환한다.
생각보다 개발을 진행하며 Cast를 자주 사용한 기억이 있다.
Unreal C++ Interface
- U로 시작하는 타입 클래스: 클래스 타입정보를 제공하는 클래스 (우리가 크게 건들이지 않음)
- I로 시작하는 인터페티스 클래스: 실질적인 설계 및 구현을 할 때 사용하는 클래스
Interface 주의사항
- 클래스 정보에 대해서 단일 상속만 지원하기 때문에 다른 것을 상속받고 있을 경우 Interface와 관련해서 Super를 사용해서 Interface의 함수를 불러올 수 없다.
- 추상타입( = 0;)으로 강제되지 않고 구현을 해서 사용해도 무관하다. 다만 객체지향과 멀어질 뿐이다.
'Unreal 게임 개발 > Unreal 강의 개인 정리' 카테고리의 다른 글
Unreal Struct & Map (0) | 2024.01.03 |
---|---|
Unreal Delegate (0) | 2023.12.29 |
Unreal Composition & Enum UMETA 출력 (0) | 2023.12.28 |
Unreal 기본타입 및 문자열 (0) | 2023.12.26 |
Unreal Object Reflection System & UClass (0) | 2023.12.18 |