1. 인터페이스와 베이스(추상) 클래스의 차이점
구분 |
인터페이스 |
베이스(추상) 클래스 |
목적 |
“이 기능 있음” 약속만 함 |
“공통 동작/데이터”까지 구현 |
구현/데이터 |
함수 선언만, 구현/멤버 변수 없음 |
함수 구현/멤버 변수 가능 |
상속 |
여러 개 동시 상속 가능 |
한 번에 하나만 상속 |
코드 재사용 |
X |
O |
언리얼 예시 |
IInteractable |
AItemBase |
2. 아이템 인터페이스와 베이스 클래스 구현 방법
- 아이템 인터페이스 생성:
UINTERFACE(Blueprintable)
class UMyItemInterface : public UInterface
{
GENERATED_BODY()
};
class IMyItemInterface
{
GENERATED_BODY()
public:
virtual void OnPickup(AActor* Picker) = 0;
};
아이템 클래스에서 public IMyItemInterface
상속
- 아이템 베이스 클래스 생성:
공통 기능(예: 콜라이더, OnOverlap) 구현 후 상속
3. 상속을 통한 아이템 구현 예시
- 코인 아이템: 오버랩 시 점수/코인 증가
- 힐링 포션: 오버랩 시 플레이어 체력 회복
- 지뢰 아이템: 오버랩 시 폭발, 데미지
void AItemBase::NotifyActorBeginOverlap(AActor* OtherActor)
{
// 각 아이템별 OnOverlap 처리
}
4. 스피어 콜라이더 오버랩 이벤트 구현
- 각 아이템 클래스에
USphereComponent
추가
- BeginOverlap 이벤트로 플레이어 감지 및 처리
5. 오늘의 요약
- 인터페이스는 “이 기능 있음”만 표시, 베이스 클래스는 공통 동작/데이터까지 구현
- 콜라이더와 오버랩 이벤트 활용해 다양한 아이템 효과 구현 가능
- 구조를 잘 설계하면 아이템 추가/확장 편리