1. 인터페이스(Blueprint Interface)란?

1.1 인터페이스의 개념

  • 인터페이스함수 선언부만 모아둔 설계도입니다.
  • 구현(Implementation)이 없는 함수 모음이며, 이를 다른 블루프린트에 추가하여 각 블루프린트마다 고유한 방식으로 함수를 구현할 수 있습니다.
  • 핵심 목적: 서로 다른 블루프린트 간의 명확한 메시지 전달유연한 함수 공유를 가능하게 합니다.

1.2 필요성

기존 방식인 Cast:

  • 여러 블루프린트 간 함수를 호출할 때, 일일이 Cast를 사용해야 했습니다.
  • 이 방식은 불편하고, Cast 대상의 모든 변수와 함수를 참조해야 하는 성능 낭비가 발생합니다.

인터페이스의 장점:

  • 직접 참조 없이 다른 블루프린트의 함수를 호출할 수 있습니다.
  • 객체 간의 유형 구분 없이 공통 함수 호출이 가능합니다.

2. 인터페이스 사용 단계

2.1 블루프린트 인터페이스 생성하기

  1. Blueprint Interface를 생성합니다.

    • 경로: BlueprintsBlueprint Interface 클릭.
    • 예시: 인터페이스 이름 BP_Hello.
  2. 함수 추가:

    • 인터페이스 안에 원하는 함수를 생성합니다.
    • 예시: 함수 이름 TriggerEventExample.
    • 중요: 이 단계에서는 함수에 로직(기능)이 없습니다. 선언만 이루어집니다.

2.2 인터페이스 추가하기

  1. 인터페이스를 사용할 블루프린트에 추가합니다.
    • Class SettingsInterfaces 섹션에서 인터페이스 추가.
  2. 예시: 캐릭터 블루프린트에 BP_Hello 인터페이스를 추가.
  3. 결과:
    • 추가된 인터페이스는 해당 블루프린트에 함수 목록으로 나타납니다.

2.3 인터페이스 함수 구현하기

인터페이스를 추가한 블루프린트에서는 반드시 해당 인터페이스의 함수를 구현해야 합니다.

  1. Event Graph에서 함수 구현:

    • 우클릭 → Add Event → 인터페이스 함수 선택.
    • 예시: TriggerEventExample 이벤트 추가.
  2. 로직 추가:

    • 이벤트 핀에 노드를 연결하여 동작을 구현합니다.
    • 예시: Print String 노드를 연결해 "HAHAHA" 메시지를 출력.

2.4 인터페이스 함수 호출하기

인터페이스 함수를 호출할 때 Interface Message 노드를 사용합니다.

  1. Interface Message 노드:

    • Target 입력 핀에 인터페이스가 구현된 블루프린트의 인스턴스를 제공합니다.
    • 인터페이스를 구현하지 않은 블루프린트에 호출하면 아무 동작도 하지 않음.
  2. 로직 예시:

    • 캐릭터가 큐브와 Overlap 이벤트 발생 시:
      • BP_Hello 인터페이스의 TriggerEventExample 함수 호출.
      • 결과: "HAHAHA" 메시지 출력.

3. 블루프린트 인터페이스의 특징

3.1 함수와 이벤트의 차이점

  • 이벤트: 특정 조건(예: 충돌, 키 입력 등)에 의해 실행됩니다.
    • 실행의 계기가 있는 경우 사용됩니다.
  • 함수: 하나의 기능을 정의하며 시작 → 끝까지 한 번에 실행됩니다.

3.2 인터페이스 함수 덮어쓰기(Override)

인터페이스를 구현한 블루프린트마다 함수의 고유한 로직을 정의할 수 있습니다.

  • 예시:
    • BP_HelloTriggerEventExample 함수를 구현:
      • 캐릭터 블루프린트: "HAHAHA" 출력.
      • 박스 블루프린트: "Box Overlapped!" 출력.
    • 동일한 함수 호출이지만 각각 다른 로직을 수행합니다.

4. 다른 블루프린트에서 인터페이스 함수 호출하기

4.1 호출 조건

  1. 두 블루프린트 모두 같은 인터페이스를 구현해야 합니다.
  2. 호출하는 블루프린트에서 대상 블루프린트의 인스턴스를 알고 있어야 합니다.

4.2 노드 종류

  1. Call Function:
    • 로컬 함수 호출 시 사용됩니다.
  2. Interface Message:
    • 다른 블루프린트의 인스턴스를 대상으로 인터페이스 함수를 호출합니다.
    • 대상 블루프린트가 인터페이스를 구현하지 않은 경우 조용히 실패합니다.

4.3 예시

  1. 캐릭터가 박스와 Overlap 이벤트 발생.
  2. 인터페이스 메시지 노드를 사용해 BP_Hello 인터페이스의 함수를 호출.
  3. 박스 블루프린트에서 "Box Overlapped!" 메시지를 출력.

5. 인터페이스의 활용 사례

  1. 다양한 객체에 동일한 기능 적용:

    • 차량과 나무 같은 다른 유형의 객체에 공통적으로 대미지를 입히는 기능 구현.
  2. 충돌 이벤트 처리:

    • 총알이 여러 객체(플레이어, 적 NPC 등)에 충돌 시:
      • 인터페이스를 통해 공통된 대미지 처리 함수를 호출.
      • 필요에 따라 각 객체마다 다른 대미지 로직 구현.
  3. 태그와 함께 사용:

    • 특정 태그(예: Friendly)를 가진 객체만 이벤트를 처리하도록 구분.

6. 인터페이스의 장점

  1. 다중 상속의 안전한 대안:

    • 인터페이스는 구현부가 없으므로 다중 상속의 문제(죽음의 다이아몬드)를 방지합니다.
  2. 유연성:

    • 서로 다른 블루프린트 간에 공통 기능을 정의하고 확장할 수 있습니다.
  3. 코드의 재사용성:

    • 동일한 인터페이스를 여러 블루프린트에 추가해 공통된 기능을 쉽게 공유합니다.
  4. 성능 효율성:

    • 직접 참조 없이 메시지 전달이 가능하므로 성능 낭비를 줄입니다.

profile
李家네_공부방

0개의 댓글