Blueprint Interface
클래스가 아니라 구현한 능력을 향해 메시지를 보낸다
발사체는 적인지 플레이어인지 알 필요가 없습니다. 대상이
BPI_Damageable 계약을 구현했는지만 확인하고,
ApplyDamage (Message)를 보냅니다.
contract
Interface
BPI_Damageable
Function
ApplyDamage
Input pin
DamageAmount: Float
BP_Projectile에서 연결되는 노드 순서
Event Hit
Other Actor 확보
충돌한 액터 레퍼런스를 메시지 대상 후보로 둡니다.
Interface Check
Does Implement Interface
대상이 BPI_Damageable을 구현했는지 불리언으로
확인합니다.
Branch True
Message 호출
참일 때만 ApplyDamage (Message)에 Target과
DamageAmount를 연결합니다.
False
대상 제외
구현하지 않은 액터는 캐스팅이나 접근 없이 그대로 통과시킵니다.
같은 메시지, 다른 구현
대상 액터
구현 위치
실행되는 이벤트
결과
BP_Enemy
Class Settings에
BPI_Damageable 추가
Event ApplyDamage
CurrentHealth에서 DamageAmount 차감
BP_PlayerCharacter
같은 인터페이스를 별도 클래스에 구현
Event ApplyDamage
방어막, 체력, 피격 효과를 플레이어 규칙대로 처리
StaticMeshActor
인터페이스 미구현
실행 이벤트 없음
Branch의 False 경로로 빠져 안전하게 무시
이 방식이 느슨한 결합이 되는 이유
01
Cast를 줄임
발사체는 대상 클래스 이름을 몰라도 됩니다.
02
새 구현체 추가
상자나 문도 인터페이스만 구현하면 같은 메시지를 받을 수
있습니다.
03
호출자 수정 최소화
대상별 처리 차이는 각 클래스의 이벤트 구현 안에 머뭅니다.