매크로(Macros)는 기본적으로 접힌 노드 그래프와 같습니다. 터널 노드로 지정된 엔트리 포인트 및 엑시트 포인트가 있습니다. 각 터널은 다수의 실행 핀 또는 데이터 핀을 보유할 수 있으며, 이러한 핀은 다른 블루프린트와 그래프에서 사용 시 매크로 노드에 표시됩니다.
매크로 생성하기
이 튜토리얼에서는 캐릭터에게 점프할 에너지가 충분히 있는지 확인하는 매크로를 만들 것입니다. 에너지가 충분한 경우 매크로는 플레이어의 에너지를 고갈시키고 현재 값을 화면에 출력한 다음 점프 함수를 호출합니다. 에너지가 충분하지 않은 경우 매크로는 화면에 "에너지 부족"이라고 출력하고 점프하지 못하게 합니다.
이 예제에서는 시작용 콘텐츠(Starter Content)가 활성화된 블루프린트 3인칭 프로젝트(Blueprint Third Person Project)를 사용하겠습니다.
프로젝트를 생성하고 시작한 후
Content/ThirdPerson/Blueprints폴더로 이동하여 BP_ThirdPersonCharacter 블루프린트를 엽니다.내 블루프린트(My Blueprint) 창으로 이동한 후 매크로 추가(Add Macro) 버튼을 클릭합니다.
새로운 매크로가 생성되면 선택하고 F2 키를 눌러 이름을 EnergyCheck로 변경합니다.
매크로를 선택한 상태에서 디테일(Details) > 입력(Inputs)으로 이동하고 추가(+)를 클릭하여 BeginCheck라는 새 입력을 만든 후 타입을 Exec**(실행 핀)으로 변경합니다.
디테일(Details) > 출력(Outputs)으로 이동하고 추가(+) 버튼을 클릭하여 출력 2개를 새로 생성합니다. 이름을 각각 HasEnergy와 NoEnergy로 지정한 다음, 실행 핀 타입을 설정합니다.
이렇게 하면 매크로 노드 자체에 입력/출력 노드가 생성되고 매크로와 데이터를 주고받는 데 사용할 수 있습니다.
입력의 경우 BeginCheck라는 실행 핀을 사용하여 매크로를 시작합니다. 그다음으로 플레이어에게 점프할 에너지가 충분히 있는지 확인한 후 충분하다면 HasEnergy 핀을 실행하는 스크립트를 생성합니다. 플레이어의 에너지가 충분하지 않은 경우, NoEnergy 핀을 실행합니다.
내 블루프린트(My Blueprint) 창에서 변수 추가(Add Variable) 버튼을 클릭하여 Energy라는 이름의 float 변수를 새로 만듭니다.
툴바에서 컴파일(Compile)을 클릭한 다음 Energy를 선택하고 디테일(Details) 패널로 이동하여 값을 100으로 설정합니다.
Energy 그래프에서 B + 좌클릭하여 Branch 노드를 생성합니다.
Blueprintcontext_graphCtrl 키를 누른 상태로 내 블루프린트(My Blueprint) 탭에서 Energy float 변수를 매크로 그래프에 드래그한 다음, 출력 핀을 클릭하고 드래그하여 Greater 연산자 노드를 검색한 후, 출력 핀을 Branch에 연결합니다.
Alt 키를 누른 상태로 Energy 변수를 드래그하여 Set 노드를 추가합니다.
다시 Ctrl 키를 누른 상태로 Energy를 드래그하여 Subtract(-) 노드에 연결하고 10으로 설정한 다음 Set 노드에 연결합니다. 이 스크립트에서는 Energy가 0보다 크면 현재 Energy 값에서 10을 빼기로 정의합니다.
그래프에 우클릭하고 Print String 노드를 추가한 다음 Set Energy 노드를 In String 핀에 연결합니다.
Energy 값을 화면에 출력되는 문자열로 변환하여 그 값을 표시하는 Conversion 노드가 추가됩니다.
Branch의 False 핀에서 다른 Print String 노드를 추가하고 박스에 '에너지 부족!(Out of Energy)'이라는 텍스트를 입력합니다. 그런 다음 첫 번째와 두 번째 Print String 노드를 각각 HasEnergy와 NoEnergy 핀에 연결합니다.
Blueprintcontext_graph이제 매크로가 Energy 변수를 확인하고(조건 해당 시, 빼기 적용) 플레이어의 에너지가 충분한지 여부를 출력하도록 설정되었으며, 이 결과는 플레이어가 점프할 수 있는지 여부를 결정하는 데 사용됩니다. 이제 '점프' 키를 누른 후 점프 동작이 실행되기 전에 매크로를 구현해야 합니다.
이벤트 그래프(EventGraph)에서 InputAction Jump 노드의 Pressed 핀을 드래그해서 EnergyCheck를 검색합니다.
생성한 매크로가 유틸리티(Utilities) 아래에 나열되며, 이름 옆에 매크로 아이콘이 보입니다.
매크로가 추가되면 점프 스크립트는 아래와 비슷해 보일 것입니다.
컴파일(Compile)과 저장(Save) 버튼을 누르고 블루프린트를 닫습니다.
에디터의 메인 툴바에서 플레이(Play)를 클릭합니다.
스페이스 바를 눌러 점프하면 화면의 왼쪽 상단에 Energy 값이 출력됩니다. Energy가 0이면 더 이상 점프할 수 없습니다.
최종 결과
이 기본 예제에서 매크로를 사용하여 스크립트를 실행하고 단일 노드로 통합하여 이벤트 그래프와 메인 캐릭터 스크립트의 가독성을 개선했습니다. 추가로, 이 매크로는 다른 상황에서도 호출할 수 있습니다. 예를 들어, 플레이어의 에너지를 감소시키는 공격과 같은 액션이 있고 해당 액션을 수행할 에너지가 충분한지 확인하려는 경우, 이 매크로를 실행하여 공격 키를 누른 후 플레이어의 에너지가 공격을 실행하기에 충분한지 확인한 다음 HasEnergy 실행 핀에서 공격을 실행할 수 있습니다.