배열 작업

변수 집합에 배열을 사용하는 여러가지 방법을 보여줍니다.

Choose your operating system:

Windows

macOS

Linux

프로그래밍 용어에 익숙치 않은 분들의 경우, Array 배열이라 함은 하나의 개체 안에 담긴 동일 유형의 배열 집합으로 생각하면 됩니다. 예를 들어 Float 배열을 만들고자 하는 경우, 그 배열은 Float 변수만 저장할 수 있습니다. 배열을 생성한 이후에는, 그 배열 내 각각의 변수에 접근하여 개별적으로 변경하거나, 배열 내 모든 항목을 한꺼번에 변경하(여 개별적으로 할 때 비해 반복작업 속도를 크게 향상시키)는 것도 가능합니다.

여기서는 블루프린트 안에 배열 변수를 만드는 법은 물론 Make Array (배열 만들기) 노드를 사용하여 배열을 만드는 법도 알아보겠습니다. 배열을 만드는 법에 대해 이해한 후에는 배열 사용법 예제 섹션을 참고해 보면 배열 작업 관련 용례를 확인해 볼 수 있습니다.

자세한 사용법 및 정보는 블루프린트 배열 , 배열 노드 문서를 참고하세요.

배열 변수

배열 변수 생성 방법은 다음과 같습니다.

  1. 블루프린트 안에서 변수 추가 버튼을 누르고, 변수에 이름을 지은 다음 변수 유형을 설정합니다.

    HT1.png

    여기서는 Text 변수 TextArray 를 만들었습니다.

  2. 변수의 디테일 패널에서 변수 유형 옆에 있는 배열 그리드 버튼을 클릭합니다.

    HT2.png

    그러면 변수가 배열로 변환됩니다.

    HT3.png

  3. 컴파일 버튼을 누르고, Default Value 아래 휴지통 아이콘 옆의 + 부호를 클릭하여 배열에 항목을 추가합니다.

    HT4.png

  4. 배열에 요소를 원하는 만큼 추가한 다음 인덱스에 그 값을 할당할 수 있습니다.

    HT5.png

    우리 예제에서는 첫 항목은 Hello! , 둘째 항목은 GoodBye! , 셋째 항목은 ... 로 설정된 Text 배열을 만들었습니다. 이 예제는 설정해 둔 조건에 따라 각기 다른 텍스트로 플레이어에게 반응하는 NPC 같은 데 사용할 수 있습니다.

전 그림에서처럼, 배열의 인덱스 값은 0 에서 시작됩니다. 첫 인덱스가 1 이 아닌 0 이라는 뜻입니다. 배열을 채울 때는 이 점을 염두에 두어야 합니다. 인덱스 값으로 배열 내 항목에 접근하고자 할 때, 첫 항목을 접근하려면 1 이 아닌 0 을, 둘째 항목은 마찬가지로 2 가 아닌 1 식으로 입력해야 하기 때문입니다.

배열 만들기

배열 변수를 만들 때, 변수의 Default Value 세팅을 통해 배열에 나타나도록 항목을 정의합니다. 하지만 레벨에 존재하는 액터들로 배열을 채우는 경우처럼, 실행시간에 배열을 채우는 경우도 있을 수 있습니다. 이러한 경우, 배열 만들기 노드를 사용하면 배열 변수를 만들고 기본값을 할당하는 방식이 아닌, 일련의 항목들로부터 배열을 만드는 것이 가능합니다.

이 예제에서는 레벨에 순서대로 전환할 수 있는 카메라 여러대로 배열을 만든다 칩시다.

배열 만들기 노드를 사용하는 법은 다음과 같습니다.

  1. 레벨에 액터(여기서는 카메라 액터)를 여럿 배치한 다음, 모두 선택하고 레벨 블루프린트 를 엽니다.

  2. 그래프에 우클릭 한 다음 선택된 액터로의 레퍼런스 추가 옵션을 선택합니다.

  3. 배열에 추가시키고자 하는 액터로의 레퍼런스가 생기면, 그래프에 우클릭 한 다음 배열 만들기 노드를 추가합니다.

    HT6.png

  4. 배열 만들기 노드에서 + 부호를 눌러 배열에 나타나는 각 액터에 필요한 만큼의 핀을 추가합니다.

    HT7.png

  5. 액터 중 하나를 끌어 놓은 다음 Make Array 노드의 0 (또는 다른 핀)에 연결합니다.

    HT8.png

    그러면 배열이 선택된 액터에 대한 배열 유형으로 변환됩니다 (컴파일하면 오류 메시지는 사라집니다).

  6. 나머지 액터를 Make Array 노드의 나머지 핀에 연결합니다.

    HT9.png

  7. Array 핀을 끌어 놓은 다음 Get 노드를 검색 추가합니다.

    HT10.png

    Get 노드의 박스 안에 있는 값이 Make Array 노드에서 접근(Get)할 Index (배열 요소)입니다.

    변수가 Get Camera 인 아래에서는 Integer 변수가 될 수도 있습니다.

    HT11.png

    일정한 스크립트를 통해 Get Camera 를 정수 값으로 Set 하여, Get 노드에서 설정하는 카메라 액터 를 바꾸는 효과를 낼 수 있습니다. 아래에서는 이러한 구성을 사용하여 레벨에 배치된 카메라 액터를 차례대로 전환하고 있습니다.

    HT12.png

배열 사용법 예제

이 예제에서는 배열을 사용하여 레벨 내 임의의 위치에 임의의 블루프린트 이펙트를 스폰하도록 하겠습니다.

이 예제에서는 시작용 콘텐츠를 포함 블루프린트 삼인칭 템플릿 프로젝트를 사용하고 있습니다.

  1. 프로젝트로 들어가 모드 메뉴의 기본 탭에서 타깃 포인트 를 다섯 개 레벨에 끌어 놓습니다.

    HT13.png

    이펙트 스폰을 위한 위치 역할을 하게 됩니다.

  2. 월드 아웃라이너 에서 Target 을 검색한 다음 Shift 를 누르고 타깃 포인트를 전부 선택합니다.

    HT14.png

  3. 메인 툴바에서 블루프린트 버튼을 클릭하고 레벨 블루프린트 열기 를 선택합니다.

    HT15.png

  4. 그래프에 우클릭 한 다음 5 개의 선택된 액터에 대한 레퍼런스 생성 을 선택합니다.

    HT16.png

    그러면 레벨의 각 타깃 포인트로의 레퍼런스가 생성되어 접근할 수 있게 됩니다.

  5. 그래프에 다시 우클릭 한 다음 배열 만들기 노드를 검색 추가합니다.

    HT17.png

  6. 배열 만들기 에서 + 부호를 네 번 눌러 노드에 핀을 추가한 다음 타깃 포인트를 연결합니다.

    HT18.png

  7. 그래프에 우클릭 한 다음 F Key Event 를 추가하고, Pressed 핀을 끌어 놓은 다음 Spawn Actor from Class 노드를 추가합니다.

    HT19.png

  8. 내 블루프린트 창에서 액터 클래스 유형의 새 변수를 생성합니다.

    HT20.png

  9. 변수 이름을 ActorClassArray 로 하고 배열 그리드 아이콘을 눌러 변수를 배열로 만듭니다.

  10. 컴파일 을 클릭하고 Default Value 섹션에서 액터를 셋 추가합니다 (Fire, Explosion, Spark 이펙트를 사용합니다).

    HT21.png

  11. Ctrl 키를 누르고 ActorClassArray 변수를 끌어 놓은 다음, 거기서 끌어 놓아 Get 노드를 추가합니다.

  12. Index 핀을 끌어 놓은 다음, Random Integer in Range 노드를 검색 추가합니다.

    HT22.png

  13. Max 세팅에는 2 를 설정한 다음, Get 핀을 Spawn Actor 노드의 Class 핀에 연결합니다.

    HT23.png

    Max 세팅의 경우, Index 값이 0 부터 시작하므로 2 로 설정하면 액터 각각을 구해올 수 있습니다.

  14. 배열 만들기 노드의 출력 핀을 끌어 놓은 다음 Get 노드를 추가합니다.

  15. Index 핀을 끌어 놓은 다음, 다시 Random Integer in Range 노드를 추가하고 Max 는 4 로 설정합니다.

  16. Get 핀을 끌어 놓은 다음 Get Actor Transform 노드를 검색 추가합니다.

    HT24.png

  17. Get Actor Transform Return Value Spawn Actor 노드의 Spawn Transform 핀에 연결합니다.

  18. 컴파일 저장 버튼을 누르면, 그래프가 아래와 비슷해 보일 것입니다.

    HT25.png

  19. 블루프린트를 닫은 다음, 플레이 버튼을 클릭하여 에디터에서 플레이합니다.

    에디터에서 플레이할 때, F 키를 누를 때마다 (배열에 추가했던 것 중) 임의의 블루프린트가 선택되어 타깃 포인트 배열 중 임의의 위치에 스폰됩니다. F Key Event 를 통해서 또는 이펙트 스폰 대신, 같은 로직을 사용하여 플레이어가 획득할 수 있는 생명력 또는 탄창 픽업같은 것을 임의 지점에 스폰하도록 구성하는 것도 가능합니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기