본문 바로가기

블루프린팅/13. 데이터구조및 흐름제어

[13장 데이터 구조및 흐름제어] 세트와 맵

세트

세트는 또 다른 타입의 컨테이너이다. 세트는 우리나라 말로 집합이다. 보통 엘리먼트의 값은 중복값이 없으며 인덱스가 없다.  집합에 관련된 연산자가 마련되어 있다.

 

SET는 다음과 같은 노드들을 갖고 있다.

ADD : 세트에 요소를 추가

ADD ITEMS: 세트에 배열의 요소를 세트에 추가

CONTAINS: 세트에 엘리먼트가 있다면 True를  반환

LENGTH: 세트의 요소수를 반환

TO ARRAY: 세트를 배열에 복사한다. 비용이 많이 든다

CLEAR: 모든 요소를 제거한다

REMOVE: 세트의 엘리먼트를 제거한경우 True 반대의 경우 False를 리턴한다.

REMOVE ITEMS: 세트에서 배열에 있는 지정된 요소들을 제거한다.

UNION: 두개의 세트를 합쳐친 새로운 세트를 만든다

DIFFERENCE : 차집합

INTERSECTION : 합집합 

 

키-값 쌍을 이용해 엘리먼트를 정의한다. 맵은 순서가 없고 키 값을 이용해 검색이 가능하다. 중복키는 허용되지만 중복값은 허용된다.

다음과 같은노드들을 지원한다.

ADD : 키-값 쌍을 맵에 추가한다

REMOVE : 키-값 쌍을 제거한다.

CLEAR : 맵의 모든 요소를  제거한다.

LENGTH : 맵의 요소 수를 반환한다.

CONTAINS : 키를 입력 파라미터로 받고 해당 키를 사용하는 요소가 맵에 포함돼 있으면 True를 반환한다.

FIND : FIND노드는 CONTAINS노드와 비슷하지만 검색에 사용된 키와 관련된 값도 반환한다.

KEYS : 맵의 모든 키를 배열에 복사한다

VALUES : 맵의 모든 값을 배열에 복사한다.

 

열거형(Enum)

상수의 고정 집합을 포함하는 데이터 타입.

생성시 이름을 E로 시작하는 명명규칙이 있다.

만들는 법은 컨텐츠드로워를 열고 빈곳에 우클릭후 아이콘의 Blueprint가 아닌 아래부분 Advanced Asset> Blueprint>Enumeration을 선택하고 이름을 짓는다.

EWeaponCategory라고 해보겠다.  더블클릭하면 에디터가 나타난다. +Add Enumerator를 클릭해서 상수들을 추가한다.

저장후 적당한 블루프린트에 가서 Weapon이라는 이름의 변수를 만들고 타입은 방금만든 EWeaponCategory를 지정한다.

변수를 끌어 이벤트그래프에 SET으로 놓으면 다음과 같이 열거형 상수를 선택할 수 있다. Weapon의 상수에 다라 선택된 출력을 맵핑할 수 있다.

 

구조체(스트럭쳐)

여러 타입의 변수를 단일 타입으로 그룹화할 수 있는 복합 데이터 타입이다. 구조체의 요소는 다른 구조체, 배열, 세트, 맵 또는 오브젝트 레퍼런스와 같은 복합 타입일 수 있다. 만드는 법은 Create Advanced Asset>Blueprint>Structure를 선택해 만들수 있다. 이름을 적당히 바꿔준다.

에디터가 나오면 +를 눌러 필요한 변수들을 추가해준다

WeaponType이라는 이름의 변수를 방금만든 Struct타입으로 설정하고 블루프린트 상에서 MakeWeaponType으로 만들고 BreakWeaponType으로 분해해서 출력할 수 있다.

 

데이터테이블

구조체를 기반으로 하는 값 테이블이다. 스프레드 시트문서를 나타내는 데 사용할 수 있다.

컨텐트드로워의 빈곳에 우클릭후 CreateAdvanmcedAsset>DataTable을 클릭하고 

WeaponType Struct를 선택후 OK를 클릭하고 이름을 적당히 변경하고 열어본다.

에디터가 열리면 +를 눌러 아이템을 추가하고 세팅해준다.

저장후 블루스크린에디터를 연다.

변수+를 클릭하고 타입에서 DataTable을 검색해서 Object Reference를 선택한다.

컴파일후 디폴트값을 WeaponTable로 설정해준다.

다음과 같이 RowName이 1인 데이터를 찾아 WeaponType에 설정해주고 스트럭처를 분해해 Name을 출력해준다.