본문 바로가기

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

4부 고급 블루프린트 13장 데이터 구조및 흐름제어

다양한 컨테이너 타입 살펴보기

컨테이너는 그 인스턴스가 값또는 인스턴스의 모음을 저장할 수 있는 데이터구조타입이다. 컨테이너의 값은 동일한 타입이어야 한다. 컨테이너의 엘리먼트는 엘리먼트에 연결된 레이블을 사용해 나중에 다시 가져올 수 있다.

블루프린트에서 사용가능한 컨테이너는 배열, 세트, 맵이다. 변수를 컨테이너로 바꾸려면 변수 타입 옆에 있는 아이콘을 클릭하고 나타나는 컨테이너중 하나를 선택한다.

 

아무 프로젝트나 ContainerTest라는 블루프린트>Actor를 하나 만든다. 연습은 아래에서 할것이니까 이건 그냥 보기만 하자

마이 블루프린트 변수+를 클릭 이름을 ContainerExample 타입:인테저로 설정한다.

디테일판넬의 VariableType의 변수이름 옆 파란색 아이콘을 클릭하고 나타나는 컨테이너중 하나를 선택하면 된다.

 

가장많이 사용하는 컨테이너 타입인 배열에 대해 공부해 보겠다

 

배열

1. 내 블루프린트 패널에서 변수+를 클릭하고 AmmoSlot 타입:Integer로 하고 디테일에서 변수이름옆 파란 아이콘을 클릭해 배열로 바꿔준다.

2. 기본값을 설정하기 위해서는 컴파일이 필요하다. 컴파일후 + 버튼을 눌러 엘리먼트의 기본값을 설정해준다. 인덱스는 0부터 시작한다.

3. 이벤트그래프 탭을 눌러 빈곳에 AmmoSlot변수를 끌어다 놓고 GET을 선택하던지 우클릭해서 검색해서 Get AmmoSlot를 선택해도 된다. 이후 노드의 출력핀을 끌어 GET(사본)을 추가한다. GET(a ref)도 있다. 사본은 Value를 복사하는거고 ref는 참조값인듯 하다.

배열의 엘리먼트를 수정하려면 Set Arry Elem노드를 사용한다. 다음 예제에서는 Ammoslot[2]의 값(Item)을 10으로 세팅한다.

데이터를 추가하기 위해서는 맨마지막에 추가해주는 ADD와 현재위치와 데이터를 쭉 밀고 넣어주는 Insert가 있다.

배열의 길이를 구해주는 LENGTH와 마지막 인덱스를 구해주는 LAST INDEX가 있다. LAST INDEX = LENGTH - 1이다

랜덤배열아이템노드, 배열의 엘리먼트의 유무를 체크하는 IS Empty, isNotEmpty함수도 있다

배열만들기

PointLight1~4까지 4개의 인테저변수가 있다. PointLightArray라는 인테저배열을 만들었다. 

개별 인테저변수와 PointLightArray아래핀을 연결하면 자동으로 MakeArray변환노드가 생성된다. 우클릭후 MakeArray로 추가해도 된다.

MakeArray +를 3번 더 눌러 입력핀을 만들어 준후 연결할 수 있다. SET Array ELEM은 기존 엘리먼트를 변경하는데 사용하고 이번  MakeArray는 초기값이나 추가하는데 사용할 수 있을듯 하다.