Choose your operating system:
Windows
macOS
Linux
언리얼 엔진 4.15 버전 릴리즈 이후 언리얼 엔진 4 (UE4) 의 Blueprint Application Programming Interface (API) 에 Map (맵) 컨테이너 유형이 추가되었습니다. "컨테이너" 라는 용어는, 보관 상자같은 것에 아이템 라벨을 붙인 뒤 박스 안에 넣어두고 바로 (아니면 나중에) 사용하는 것을 말합니다. 배열을 사용하여 아이템 컬렉션을 저장 및 작업을 해 봤다면, 이미 UE4 에서 블루프린트 컨테이너 사용을 해 본 것입니다. 예를 들어 배열로 나중에 사용할 아이템을 저장하면 아이템의 라벨은 배열에 있는 것입니다. 맵이나 배열이나 둘 다 라벨을 사용하여 아이템이 컨테이너 어디에 있는지 나타내지만, 맵의 라벨은 배열의 라벨과 다릅니다. 배열을 사용하면 라벨은 아이템의 컨테이너 내 순차 인덱스를 말하는 반면, 맵을 사용하면 라벨은 컨테이너의 아이템에 할당된 키를 말합니다. 맵은 컨테이너의 아이템과 각자의 키를 할당할 수 있는 기능 덕에 창의적인 활용이 가능하여, 블루프린트 API 의 유용한 기능이 됩니다.
블루프린트 맵은 블루프린트 API 의 멋진 추가 기능입니다. 배열 이후로 UE4 의 인기있는 컨테이너 역할을 하기 때문입니다. 맵의 인기가 그렇게 좋은 이유는, 개발자들이 할당된 키를 사용하여 효율적으로 아이템을 찾아보고 구해올 수 있다는 사실 때문입니다. 배열이나 세트와 마찬가지로 블루프린트 맵 역시 게임 개발 시 활용도가 높습니다.
이 글을 통해 블루프린트 맵 생성 몇 편집 방법에 대해 배우게 될 것입니다. 블루프린트 맵의 프로퍼티에 대한 설명 역시 게임 프로젝트에 맵을 최대한 활용하는 데 도움이 될 것입니다.
맵 생성
블루프린트 맵을 새로 생성하는 방법은 다음과 같습니다.
-
작업할 블루프린트 클래스가 없는 경우, 신규 추가 버튼으로 새 블루프린트 클래스를 프로젝트에 추가합니다.
-
이제 부모 클래스 선택 메뉴에 표시되는 클래스 목록에서 Actor 를 선택합니다.
-
액터 클래스 이름을 지은 후, 계속해서 콘텐츠 브라우저 안에 새로 생성된 액터 클래스를 더블 클릭하여 엽니다.
-
액터의 블루프린트 스크립트 편집을 시작하려면, 이벤트 그래프 탭을 선택합니다.
-
액터의 이벤트 그래프 가 열린 상태로 마우스 커서를 변수 서브메뉴에 올리면 + 변수 버튼이 드러납니다.
-
새로운 String 변수를 생성하고 이름을
MyStringSet
라 합니다.변수 이름이 약간 규칙에 얽매이는 것 같아 보일 수는 있지만,
MyStringIntegerMap
과 같은 식으로 변수 이름을 지어 놓으면 맵은 스트링 유형의 키에 인티저 유형 값이 할당된다는 정보를 줄 수 있습니다. -
현재
MyStringSet
은 단일 String 변수입니다.MyStringSet
를 Set 컨테이너로 변환하려면, 액터의 디테일 패널 내 Variable Type (변수 유형) 라벨 오른편에 위치한 Variable Type (변수 유형) 버튼을 클릭합니다. -
나타나는 드롭다운 메뉴에 네 가지 컨테이너 옵션이 표시됩니다. { } 옵션을 선택하면
MyStringIntegerMap
가 블루프린트 맵으로 변환됩니다.
계속해서
MyStringIntegerMap
의
Variable Type
을 조사하여 맵의 키 유형이
String
인지, 값 유형이
Integer
인지 확인합니다.
세트 편집
새로 생성된 맵 편집을 하려면, Map 변수 컨테이너를 캡슐화시킨 블루프린트를 컴파일해야 합니다.
-
MyStringIntegerMap
를 편집하려면, 블루프린트의 컴파일 버튼을 클릭합니다. -
블루프린트를 컴파일한 이후 Map 의 ( 디테일 패널에 위치한) Default Value (기본 값)에
MyStringIntegerMap
이 비어 있음을 알 수 있습니다. -
새로운 String 엘리먼트를
MyStringIntegerMap
에 추가하려면, 디테일 패널 Default Value 메뉴의 0 Set elements 옆에 위치한 + 버튼을 클릭합니다. -
계속해서 + 버튼을 다시 한 번 누릅니다.
새로운 엘리먼트의 기본 값을 업데이트하기 전 블루프린트 맵에 엘리먼트를 추가하려 하면 언리얼 에디터에서 경고가 날 것입니다.
-
MyStringIntegerMap
에 키-값 짝을 셋 추가하고, 다음 그림과 같이 맞춥니다. -
이제 키-값 짝을 하나 더 추가하고, 키 이름을
Banana
라 합니다.블루프린트 맵에 중복 키를 추가하려 하면 언리얼 에디터 경고가 납니다. 중복 값이 허용은 되지만, 중복 키는 안됩니다.
-
앞서 말한 경고를 염두에 두고, 계속해서 네 번째 키
Date
, 그 값은 2 로 설정합니다.
잘 하셨습니다! 지금까지 새로운 블루프린트 맵을 새로 만들고 키-값 짝을 넷 추가 및 편집했습니다.
컨테이너 프로퍼티
UE4 에서 블루프린트 Map 사용을 시작하려면 다음 프로퍼티 목록을 참고하세요.
-
맵의 키는 고유해야 합니다.
-
맵의 모든 키는 정의(초기화)되어야 합니다.
-
현재 블루프린트 맵에는 단일 키-값 짝만 지원됩니다.
-
맵에 할당된 키를 사용한 값 추가, 제거, 검색 작업은 빠릅니다.
-
현재 맵 값은 변경불가(immutable)합니다. 생성한 후에는 변경할 수 없다는 뜻입니다.
-
키 유형은 값 유형과 다를 수 있지만, 한 맵의 모든 키는 성질(유형)이 같아야 합니다. 다른 말로 특정 맵의 키가 스트링 유형, 그 값은 인티저 유형으로 지정된 경우, 잇따르는 모든 키 역시 스트링, 값은 인티저가 될 것입니다.
블루프린트에서 맵을 생성 및 편집하는 법을 배웠으니, 블루프린트 맵 노드 레퍼런스에서 블루프린트 Map 노드 인터페이스에 대해 더욱 자세히 배워보실 수 있습니다.