언어:
페이지 정보
수준별:
엔진 버전:
언리얼 엔진

블루프린트 맵

언리얼 엔진

언리얼 엔진 4.15 버전 릴리즈 이후 언리얼 엔진 4 (UE4) 의 Blueprint Application Programming Interface (API)Map (맵) 컨테이너 유형이 추가되었습니다. "컨테이너" 라는 용어는, 보관 상자같은 것에 아이템 라벨을 붙인 뒤 박스 안에 넣어두고 바로 (아니면 나중에) 사용하는 것을 말합니다. 배열을 사용하여 아이템 컬렉션을 저장 및 작업을 해 봤다면, 이미 UE4 에서 블루프린트 컨테이너 사용을 해 본 것입니다. 예를 들어 배열로 나중에 사용할 아이템을 저장하면 아이템의 라벨은 배열에 있는 것입니다. 맵이나 배열이나 둘 다 라벨을 사용하여 아이템이 컨테이너 어디에 있는지 나타내지만, 맵의 라벨은 배열의 라벨과 다릅니다. 배열을 사용하면 라벨은 아이템의 컨테이너 내 순차 인덱스를 말하는 반면, 맵을 사용하면 라벨은 컨테이너의 아이템에 할당된 키를 말합니다. 맵은 컨테이너의 아이템과 각자의 키를 할당할 수 있는 기능 덕에 창의적인 활용이 가능하여, 블루프린트 API 의 유용한 기능이 됩니다.

블루프린트 맵은 블루프린트 API 의 멋진 추가 기능입니다. 배열 이후로 UE4 의 인기있는 컨테이너 역할을 하기 때문입니다. 맵의 인기가 그렇게 좋은 이유는, 개발자들이 할당된 키를 사용하여 효율적으로 아이템을 찾아보고 구해올 수 있다는 사실 때문입니다. 배열이나 세트와 마찬가지로 블루프린트 맵 역시 게임 개발 시 활용도가 높습니다.

이 글을 통해 블루프린트 맵 생성 몇 편집 방법에 대해 배우게 될 것입니다. 블루프린트 맵의 프로퍼티에 대한 설명 역시 게임 프로젝트에 맵을 최대한 활용하는 데 도움이 될 것입니다.

데모 목적 상 (아래 세팅을 적용한) 기본 블루프린트 프로젝트 를 사용하여 블루프린트 맵 생성 및 편집 방법을 보여드리고 있습니다.

클릭하면 원본 이미지를 확인합니다.

맵 생성

블루프린트 맵을 새로 생성하는 방법은 다음과 같습니다.

  1. 작업할 블루프린트 클래스가 없는 경우, 신규 추가 버튼으로 새 블루프린트 클래스를 프로젝트에 추가합니다.

    클릭하면 원본 이미지를 확인합니다.

  2. 이제 부모 클래스 선택 메뉴에 표시되는 클래스 목록에서 Actor 를 선택합니다.

    creatingMaps_Step2.png

  3. 액터 클래스 이름을 지은 후, 계속해서 콘텐츠 브라우저 안에 새로 생성된 액터 클래스를 더블 클릭하여 엽니다.

    클릭하면 원본 이미지를 확인합니다.

  4. 액터의 블루프린트 스크립트 편집을 시작하려면, 이벤트 그래프 탭을 선택합니다.

    클릭하면 원본 이미지를 확인합니다.

  5. 액터의 이벤트 그래프 가 열린 상태로 마우스 커서를 변수 서브메뉴에 올리면 + 변수 버튼이 드러납니다.

    클릭하면 원본 이미지를 확인합니다.

  6. 새로운 String 변수를 생성하고 이름을 MyStringSet 라 합니다.

    클릭하면 원본 이미지를 확인합니다.

    변수 이름이 약간 규칙에 얽매이는 것 같아 보일 수는 있지만, MyStringIntegerMap 과 같은 식으로 변수 이름을 지어 놓으면 맵은 스트링 유형의 키에 인티저 유형 값이 할당된다는 정보를 줄 수 있습니다.

  7. 현재 MyStringSet 은 단일 String 변수입니다. MyStringSetSet 컨테이너로 변환하려면, 액터의 디테일 패널Variable Type (변수 유형) 라벨 오른편에 위치한 Variable Type (변수 유형) 버튼을 클릭합니다.

    클릭하면 원본 이미지를 확인합니다.

  8. 나타나는 드롭다운 메뉴에 네 가지 컨테이너 옵션이 표시됩니다. { } 옵션을 선택하면 MyStringIntegerMap 가 블루프린트 맵으로 변환됩니다.

    creatingMaps_Step8.png

계속해서 MyStringIntegerMapVariable Type 을 조사하여 맵의 키 유형이 String 인지, 값 유형이 Integer 인지 확인합니다.

creatingMaps_Step9.png

세트 편집

새로 생성된 맵 편집을 하려면, Map 변수 컨테이너를 캡슐화시킨 블루프린트를 컴파일해야 합니다.

클릭하면 원본 이미지를 확인합니다.

  1. MyStringIntegerMap 를 편집하려면, 블루프린트의 컴파일 버튼을 클릭합니다.

    클릭하면 원본 이미지를 확인합니다.

  2. 블루프린트를 컴파일한 이후 Map 의 (디테일 패널에 위치한) Default Value (기본 값)에 MyStringIntegerMap 이 비어 있음을 알 수 있습니다.

    클릭하면 원본 이미지를 확인합니다.

  3. 새로운 String 엘리먼트를 MyStringIntegerMap 에 추가하려면, 디테일 패널 Default Value 메뉴의 0 Set elements 옆에 위치한 + 버튼을 클릭합니다.

    creatingMaps_Step13.png

  4. 계속해서 + 버튼을 다시 한 번 누릅니다.

    creatingMaps_Step14.png

    새로운 엘리먼트의 기본 값을 업데이트하기 전 블루프린트 맵에 엘리먼트를 추가하려 하면 언리얼 에디터에서 경고가 날 것입니다. Step14_Warning.png

  5. MyStringIntegerMap 에 키-값 짝을 셋 추가하고, 다음 그림과 같이 맞춥니다.

    creatingMaps_Step15.png

  6. 이제 키-값 짝을 하나 더 추가하고, 키 이름을 Banana 라 합니다.

    creatingMaps_Step16.png

    블루프린트 맵에 중복 키를 추가하려 하면 언리얼 에디터 경고가 납니다. 중복 값이 허용은 되지만, 중복 키는 안됩니다. Step16_Warning.png

  7. 앞서 말한 경고를 염두에 두고, 계속해서 네 번째 키 Date, 그 값은 2 로 설정합니다.

creatingMaps_Step17.png

잘 하셨습니다! 지금까지 새로운 블루프린트 맵을 새로 만들고 키-값 짝을 넷 추가 및 편집했습니다.

컨테이너 프로퍼티

UE4 에서 블루프린트 Map 사용을 시작하려면 다음 프로퍼티 목록을 참고하세요.

  • 맵의 키는 고유해야 합니다.

  • 맵의 모든 키는 정의(초기화)되어야 합니다.

  • 현재 블루프린트 맵에는 단일 키-값 짝만 지원됩니다.

  • 맵에 할당된 키를 사용한 값 추가, 제거, 검색 작업은 빠릅니다.

  • 현재 맵 값은 변경불가(immutable)합니다. 생성한 후에는 변경할 수 없다는 뜻입니다.

  • 키 유형은 값 유형과 다를 수 있지만, 한 맵의 모든 키는 성질(유형)이 같아야 합니다. 다른 말로 특정 맵의 키가 스트링 유형, 그 값은 인티저 유형으로 지정된 경우, 잇따르는 모든 키 역시 스트링, 값은 인티저가 될 것입니다.

블루프린트에서 맵을 생성 및 편집하는 법을 배웠으니, 블루프린트 맵 노드 참고서에서 블루프린트 Map 노드 인터페이스에 대해 더욱 자세히 배워보실 수 있습니다.

관련 토픽