블루프린트의 구조체 변수

블루프린트 구조체 변수로 관련된 정보가 들어있는 다양한 데이터 유형을 저장할 수 있습니다.

Windows
MacOS
Linux

구조체는 연관성이 있는 다양한 유형의 데이터 모음으로, 쉽게 접근할 수 있도록 모아둔 것입니다. 블루프린트에서 이미 단순한 구조체를 사용해 본 적이 있으실텐데, 벡터, 로테이터, 트랜스폼 모두 구조체입니다. 예를 들어 벡터 구조체는 서로 연관성이 있는 X 플로트, Y 플로트, Z 플로트 변수를 모아둔 것입니다.

구조체는 데이터 중첩도 가능합니다. 트랜스폼 구조체에는 한 액터의 위치 (벡터 구조체), 회전 (로테이터 구조체), 스케일 (벡터 구조체) 데이터를 모아놓은 것입니다.

구조체 생성

블루프린트에 구조체를 추가하는 방법은 다른 블루프린트 변수 를 추가하는 방법과 같습니다. 벡터, 로테이터, 트랜스폼과 같은 단순한 구조체는, 변수 유형 드롭다운 메뉴의 가장 윗부분에 나옵니다.

AddSimpleStruct.png

드롭다운 메뉴에는 구조체 섹션도 있어, 현재 블루프린트에 사용할 수 있는 모든 구조체 변수를 찾을 수 있습니다.

AddComplexStruct.png

구조체 정보 접근

구조체는 데이터를 함께 묶는 방식으로 작동하기에, 작은 정보 단위에 접근하는 방법도 알아야 합니다. 그 방법은 여러가지 있습니다:

구조체 핀 분할

하나의 노드에서 구조체의 개별 변수에 접근하기를 원한다면, 구조체 핀 분할이 도움이 될 수 있습니다.

구조체 핀을 분할하려면, 핀에 우클릭한 뒤 Split Struct Pin (구조체 핀 분할) 을 선택합니다.

SplitStructPin.png

그러면 그 구조체 안에 포함된 모든 변수가 노드에 개별 핀으로 노출되어, 그 값을 개별적으로 입력하거나 조작할 수 있습니다.

LocationXYZ.png

구조체 핀 분할 을 되돌리려면, 새로 생긴 핀 중 아무거나 우클릭한 뒤 Recombine Struct Pin (구조체 핀 재결합)을 선택합니다.

RecombineStructPin.png

입력 / 출력 구조체 핀 모두 분할 / 재결합 가능합니다.

구조체 분해

종종 구조체를 개별 부속으로 떼어내는 작업이 함수나 매크로에서 반복하는 게임플레이 로직이 되는 경우가 있습니다. Break Struct (구조체 분해) 노드를 사용하면 그러한 작업을 블루프린트 그래프 전반에 걸쳐 쉽게 재현할 수 있습니다. Break Struct 노드를 만들려면, 구조체 출력 핀을 끌어놓고 컨텍스트 메뉴에서 Break [구조체 이름] ([구조체 이름] 분해)를 선택합니다.

BreakHitResult.png

사용한 구조체에 따라 Break Struct 노드의 이름과 출력 핀이 달라지는데, 전체적으로 보면 구조체를 각 부속으로 분해한 것이 됩니다.

BrokenHitResult.png

예를 들어 항상 Hit ResultImpact Point, Hit Component, Hit Bone Name 으로 작업을 하려는 경우, 함수 안에 Break Hit Result (Hit Result 분해) 노드를 넣어 두면, 그 함수 입력에 Hit Result 만 연결해 주면, 함수 안에서 그 데이터 세 부분이 항상 분해된다는 뜻입니다.

BreakHitExample.png

구조체 조합

구조체를 개별 데이터 부분으로 분해할 수 있는 것과 마찬가지로, 적당한 데이터를 가지고 구조체를 조합(make)할 수도 있습니다.

Make Struct (구조체 조합) 노드를 만들려면, 구조체 입력 핀을 끌어 놓고 컨텍스트 메뉴에서 Make [Struct Name] ([구조체 이름] 조합)을 선택합니다.

MakeLinearMenu.png

Make Struct 노드는 사용한 구조체에 따라 이름과 입력 핀이 달라지지만, 전반적으로 지정된 모든 데이터를 가지고 구조체를 만들 수 있습니다.

MakeLinearColor.png

구조체에 멤버 설정

가끔 구조체에 들어있는 데이터가 많은데 그 중 몇 개의 요소만 변경하고플 때가 있습니다. 구조체에 멤버를 설정하면 변경되지 않는 데이터 핀 연결 작업을 일일이 해줄 필요 없이, 변경하고자 하는 데이터만 콕 찝어서 작업하는 것이 가능합니다.

SetMembersInStruct.png

Set Members in Struct (구조체에 멤버 설정) 노드를 통해 작업할 수 있는 멤버를 변경하려면, 일단 노드를 선택합니다. 디테일 패널에 보면, 노드에 핀으로 노출시킬 수 있는 멤버 각각에 대해 체크박스가 있습니다. 노출되지 않는 멤버 변수는 Set Members in Struct 노드로 인해 변경되지 않습니다.

SetMembersDetails.png

커스텀 구조체 사용

엔진에 제공된 구조체를 사용하는 것 외에도 변수와 값을 사용하여 커스텀 구조체를 만들 수 있습니다.

커스텀 구조체를 만들려면 콘텐츠 브라우저 에서 고급 애셋 생성 아래 블루프린트, 구조체 를 선택합니다.

Structs.png

구조체의 이름을 정의하고 열면 구조체 창 에서 변수와 기본값을 추가할 수 있습니다.

StructWindow.png

그런 다음 변수를 만들고 구조체 이름에 Variable Type (변수 유형)을 지정하여 이 블루프린트 내부에 이 구조체를 변수로 추가할 수 있습니다.

CreatingStructVar.png

컴파일 후에는 구조체에 추가한 모든 변수를 정의할 수 있습니다.

DefaultValues.png

커스텀 구조체 분해

그래프에 커스텀 구조체를 추가할 때, 끌어 놓고 분해하여 그 안의 변수에 액세스할 수 있습니다.

BreakStruct.png

그런 다음 구조체의 개별 변수를 다른 블루프린트 노드로 연결할 수 있습니다. 선택적으로 디테일 패널에서 Hide Unconnected Pins (미연결 핀 숨기기) 버튼을 클릭하면 다른 블루프린트 노드에 연결되지 않은 핀을 숨길 수 있습니다.

HideUnconnectedPins.png

연결되지 않은 핀은 Break Struct 노드에서 숨겨집니다.

HiddenPins.png

핀 표시를 다시 활성화하려면 디테일 패널에서 원하는 변수 옆 (As pin) 프로퍼티를 활성화하면 됩니다.

태그

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼