👻 매크로란 무엇인가?

매크로는 블루프린트의 노드 네트워크를 간단히 접어서 사용할 수 있는 템플릿입니다. 매크로는 노드의 흐름을 처리하며, 다중 입출력 핀을 지원합니다. 이는 블루프린트 함수와 비슷하지만, 컴파일 시 매크로의 위치가 실제 노드들로 대체된다는 점에서 차이가 있습니다.


🌱 매크로의 주요 특징

  1. 노드 템플릿

    • 매크로는 실제 노드들의 템플릿으로 동작하며, 블루프린트 내부에서 네트워크를 간소화하는 데 유용합니다.
  2. 다중 입력 및 출력

    • 매크로는 여러 개의 입력 및 출력 핀을 가질 수 있습니다.
    • 반면 함수는 하나의 입력하나의 출력만 허용됩니다.
  3. Latent Node 지원

    • 매크로는 Delay 노드와 같은 실행 시간을 지연시키는 노드를 지원합니다.
    • 함수에서는 Latent Node를 사용할 수 없습니다.
  4. 리플리케이트 불가

    • 함수는 네트워크 상에서 리플리케이트(복제)될 수 있지만, 매크로는 불가능합니다.
  5. 컴파일 시 복사

    • 매크로는 컴파일 시 실제 코드가 대체되어 실행됩니다.
    • 매크로 내부의 모든 노드가 매크로가 호출된 위치에 삽입됩니다.

🌱 블루프린트에서 매크로 생성 및 사용

매크로 생성

  1. 블루프린트 매크로 생성 방법

    • 내 블루프린트 탭 > 매크로 섹션 > 추가 버튼을 클릭하여 새 매크로를 생성.
    • 생성된 매크로는 그래프 탭에서 별도의 탭으로 열립니다.
    • 매크로 이름과 파라미터를 설정합니다.
  2. 파라미터 추가

    • 디테일 패널 > 입력 또는 출력 섹션 > 새 파라미터 버튼을 눌러 파라미터를 추가합니다.
    • 실행 핀(Test)이나 데이터 핀(Score)을 자유롭게 설정 가능.

매크로 빌드

  1. 기본 터널 노드

    • 매크로를 처음 만들면 입력 터널 노드출력 터널 노드가 생성됩니다.
    • 디테일 패널에서 필요한 실행/데이터 핀을 추가합니다.
  2. 매크로 구현

    • 입력 터널과 출력 터널 사이에 필요한 로직을 추가.
    • 예: 점수를 비교하여 이겼는지 확인하는 매크로 구현.

🌱 함수와 매크로의 차이점

특징함수(Function)매크로(Macro)
Latent Node 지원 여부지원하지 않음지원함 (Delay 노드 사용 가능)
입출력 핀 개수하나의 입력과 출력 핀여러 개의 입력 및 출력 핀
컴파일 방식호출 시 함수 주소로 이동 후 실행매크로 위치에 노드들이 복사되어 실행
리플리케이션 지원 여부네트워크에서 리플리케이트 가능리플리케이트 불가능
메모리 사용 방식프로그램 실행 시 함수는 한 번 생성되어 주소로 호출됨매크로는 호출 시 복사본이 삽입됨

예제

  1. 함수 호출
    • 함수는 한 번만 생성된 후 호출할 때마다 동일한 메모리 주소를 참조하여 실행.
    • 예: 함수 A를 5번 호출하면 동일한 함수가 호출됨.
  2. 매크로 호출
    • 매크로는 호출할 때마다 호출 위치에 노드가 복사되어 삽입됨.
    • 예: 매크로 A를 5번 호출하면 각 호출 위치마다 해당 로직이 복사됨.

🌱 매크로 사용의 이점과 주의점

장점

  1. 가독성
    • 복잡한 블루프린트 로직을 간단히 접어 구조를 정리.
  2. 다양한 출력 처리
    • 다중 출력 핀을 활용하여 다양한 분기 처리가 가능.
  3. Latent Node 사용 가능
    • Delay와 같은 지연 노드를 사용할 수 있어 동기/비동기 처리가 자유로움.

주의점

  1. 메모리 사용

    • 매크로는 호출마다 복사되므로, 노드가 많으면 성능에 영향을 미칠 수 있음.
    • 수천 개의 노드가 포함된 매크로는 사용을 자제.
  2. 리플리케이트 불가

    • 네트워크 게임에서는 매크로가 리플리케이트되지 않으므로, 주의가 필요.

🌱 Compare Float 매크로 예제

설명

  • Compare Float 노드는 매크로 노드로, 두 값을 비교하고 결과에 따라 분기처리를 합니다.
  • 여러 비교 연산(>, <, ==)이 동시에 이루어지며, 결과에 따라 실행 핀이 분기됩니다.

노드 분석

  1. InputAxis MoveUp
    • 입력 값을 받는 노드로, 축 값(Axis Value)을 출력.
  2. Compare Float
    • Axis Value를 입력값으로 받아 특정 값(0.0)과 비교.
    • 비교 결과에 따라 >, <, ==의 실행 핀이 분기.

예제

profile
李家네_공부방

0개의 댓글