👻 매크로란 무엇인가?
매크로는 블루프린트의 노드 네트워크를 간단히 접어서 사용할 수 있는 템플릿입니다. 매크로는 노드의 흐름을 처리하며, 다중 입출력 핀을 지원합니다. 이는 블루프린트 함수와 비슷하지만, 컴파일 시 매크로의 위치가 실제 노드들로 대체된다는 점에서 차이가 있습니다.
🌱 매크로의 주요 특징
-
노드 템플릿
- 매크로는 실제 노드들의 템플릿으로 동작하며, 블루프린트 내부에서 네트워크를 간소화하는 데 유용합니다.
-
다중 입력 및 출력
- 매크로는 여러 개의 입력 및 출력 핀을 가질 수 있습니다.
- 반면 함수는 하나의 입력과 하나의 출력만 허용됩니다.
-
Latent Node 지원
- 매크로는 Delay 노드와 같은 실행 시간을 지연시키는 노드를 지원합니다.
- 함수에서는 Latent Node를 사용할 수 없습니다.
-
리플리케이트 불가
- 함수는 네트워크 상에서 리플리케이트(복제)될 수 있지만, 매크로는 불가능합니다.
-
컴파일 시 복사
- 매크로는 컴파일 시 실제 코드가 대체되어 실행됩니다.
- 매크로 내부의 모든 노드가 매크로가 호출된 위치에 삽입됩니다.
🌱 블루프린트에서 매크로 생성 및 사용
매크로 생성
-
블루프린트 매크로 생성 방법
- 내 블루프린트 탭 > 매크로 섹션 > 추가 버튼을 클릭하여 새 매크로를 생성.
- 생성된 매크로는 그래프 탭에서 별도의 탭으로 열립니다.
- 매크로 이름과 파라미터를 설정합니다.
-
파라미터 추가
- 디테일 패널 > 입력 또는 출력 섹션 > 새 파라미터 버튼을 눌러 파라미터를 추가합니다.
- 실행 핀(Test)이나 데이터 핀(Score)을 자유롭게 설정 가능.
매크로 빌드
-
기본 터널 노드
- 매크로를 처음 만들면 입력 터널 노드와 출력 터널 노드가 생성됩니다.
- 디테일 패널에서 필요한 실행/데이터 핀을 추가합니다.
-
매크로 구현
- 입력 터널과 출력 터널 사이에 필요한 로직을 추가.
- 예: 점수를 비교하여 이겼는지 확인하는 매크로 구현.
🌱 함수와 매크로의 차이점
특징 | 함수(Function) | 매크로(Macro) |
---|
Latent Node 지원 여부 | 지원하지 않음 | 지원함 (Delay 노드 사용 가능) |
입출력 핀 개수 | 하나의 입력과 출력 핀 | 여러 개의 입력 및 출력 핀 |
컴파일 방식 | 호출 시 함수 주소로 이동 후 실행 | 매크로 위치에 노드들이 복사되어 실행 |
리플리케이션 지원 여부 | 네트워크에서 리플리케이트 가능 | 리플리케이트 불가능 |
메모리 사용 방식 | 프로그램 실행 시 함수는 한 번 생성되어 주소로 호출됨 | 매크로는 호출 시 복사본이 삽입됨 |
예제
- 함수 호출
- 함수는 한 번만 생성된 후 호출할 때마다 동일한 메모리 주소를 참조하여 실행.
- 예: 함수 A를 5번 호출하면 동일한 함수가 호출됨.
- 매크로 호출
- 매크로는 호출할 때마다 호출 위치에 노드가 복사되어 삽입됨.
- 예: 매크로 A를 5번 호출하면 각 호출 위치마다 해당 로직이 복사됨.
🌱 매크로 사용의 이점과 주의점
장점
- 가독성
- 복잡한 블루프린트 로직을 간단히 접어 구조를 정리.
- 다양한 출력 처리
- 다중 출력 핀을 활용하여 다양한 분기 처리가 가능.
- Latent Node 사용 가능
- Delay와 같은 지연 노드를 사용할 수 있어 동기/비동기 처리가 자유로움.
주의점
-
메모리 사용
- 매크로는 호출마다 복사되므로, 노드가 많으면 성능에 영향을 미칠 수 있음.
- 수천 개의 노드가 포함된 매크로는 사용을 자제.
-
리플리케이트 불가
- 네트워크 게임에서는 매크로가 리플리케이트되지 않으므로, 주의가 필요.
🌱 Compare Float 매크로 예제
설명
Compare Float
노드는 매크로 노드로, 두 값을 비교하고 결과에 따라 분기처리를 합니다.
- 여러 비교 연산(>, <, ==)이 동시에 이루어지며, 결과에 따라 실행 핀이 분기됩니다.
노드 분석
- InputAxis MoveUp
- 입력 값을 받는 노드로, 축 값(Axis Value)을 출력.
- Compare Float
Axis Value
를 입력값으로 받아 특정 값(0.0)과 비교.
- 비교 결과에 따라
>
, <
, ==
의 실행 핀이 분기.
예제
