블루프린트에서 액터 참조

블루프린트에서 액터를 참조하는 하우투 안내서입니다.

Windows
MacOS
Linux

여기서는 블루프린트에서 액터 참조 방법 여러가지를 배워보겠습니다. 게임플레이 도중 블루프린트를 통해 액터의 여러가지 부분을 변경하거나, 한 블루프린트에서 다른 블루프린트로 액터 레퍼런스를 전달하여 접근할 수 있도록 하려면, 액터를 제대로 참조하는 것이 중요합니다.

레벨 블루프린트 레퍼런스

레퍼런스를 만드는 가장 흔한 방법은, 레벨 블루프린트 안에서 레벨에 배치된 액터를 참조하는 것입니다. 그 방법은 다음과 같습니다.

  1. 프로젝트 안에서 레벨에 액터 또는 블루프린트 액터를 배치합니다.

    GHT5B_1.png

    여기서는 박스 트리거 액터를 끌어 놓았습니다.

    액터 유형 관련 상세 내용은 흔한 액터 유형 문서를 참고하세요.

  2. 레벨에 액터를 선택한 채로, 메인 툴바에서 블루프린트 버튼을 클릭한 다음 레벨 블루프린트 열기 를 클릭합니다.

    GHT5B_2.png

  3. 블루프린트 에디터 창이 열린 채, 그래프 창에 우클릭 한 다음 TriggerBox 로의 레퍼런스 생성 을 선택합니다.

    GHT5B_3.png

    우리 예제에서는, TriggerBox 로의 레퍼런스를 추가하고 있으며, 액터가 여기 나타납니다.

  4. 블루프린트에 새로운 노드를 추가, 드래그하여 그 프로퍼티를 접근/설정하거나, 거기서 이벤트 또는 함수 호출이 가능합니다.

    GHT5B_4.png

    여기서는 플레이어가 트리거에 겹치면 화면에 출력합니다. 트리거를 나가면, 콜리전을 꺼서 (다시 켜기 전까지는) 발동되지 않도록 합니다. TriggerBox 를 사용하긴 했지만, 레벨에 별도의 변수, 이벤트, 함수가 들어있는 블루프린트 액터를 두면 레퍼런스를 구하는 방법을 사용하는 것으로 접근 또는 호출 가능합니다.

스폰 액터 레퍼런스

액터의 레퍼런스를 구하는 방법 한 가지 더, 레벨에 액터를 스폰시킬 때 가능합니다. 아래 예제를 살펴봅시다.

  1. 프로젝트에서 플레이어 캐릭터의 블루프린트를 엽니다 (ThirdPersonCharacter 를 사용합니다).

  2. 그래프 안에서 우클릭 한 다음 Event Begin Play 노드를 추가하고, Spawn Actor from Class 에 연결합니다.

  3. Spawn Actor 노드의 Class 드롭다운 메뉴에서, 게임이 시작되면 스폰시키고자 하는 액터 클래스를 선택합니다.

    GHT5B_5.png

    여기서는 (Get Actor Transform 노드로 나타낸) 플레이어의 트랜스폼 위치에 Blueprint_Effect_Fire 액터를 스폰하고 있습니다.

  4. Spawn Actor 노드의 Return Value 를 끌어놓은 다음 변수로 승격 을 선택합니다.

    GHT5B_6.png

    그러면 (SpawnedActor 라고 이름지은) 스폰된 액터에서 변수를 만듭니다. Return Value 를 끌어놓아 스폰하려는 선택 액터 내 변수, 이벤트, 함수에 직접 접근하는 것도 가능합니다만, 나중에 다시 접근할 수 있도록 변수로 만들려 합니다.

  5. 이제 Ctrl 키를 누르고 변수를 그래프에 끌어놓은 다음, 거기서 다시 끌어놓아 그 안의 프로퍼티에 접근합니다.

    GHT5B_7.png

    Spawned Actor 에서 파티클 이펙트 컴포넌트 (위에서 노랑 박스로 나타낸 P_Fire) 에 접근하여, ThirdPersonCharacter 블루프린트에서 플레이어가 F 키를 누르면 Deactivate 비활성화시키고 있습니다.

직접 블루프린트 통신 참조

레벨에 블루프린트 액터가 여럿 있고 그 중 하나를 다른 블루프린트 안에서 변경하고 싶을 때가 있습니다. 흔히 직접 블루프린트 통신 이라고 하는 전형적 방법은 다음과 같습니다:

  1. 레벨에 블루프린트 액터를 둘 놓습니다.

    GHT5B_8.png

    여기서는 시작용 콘텐츠 에 포함된 Blueprint_Effect_FireBlueprint_Effect_Sparks 액터를 사용합니다.

    화염 이펙트가 게임 시작 몇 초 후 스파크 이펙트를 비활성화시키고 싶다고 쳐 봅시다.

  2. Blueprint_Effect_Fire 블루프린트 안에서 Event Begin Play 를 만들어 Delay (2 초 설정)에 연결합니다.

  3. 이제 Blueprint_Effect_Sparks_C 를 사용하여 변수를 새로 만들 수 있도록 스파크 이펙트를 리퍼런싱해야 할 시점입니다.

    GHT5B_9.png

    레퍼런스 블루프린트 액터는 위에서 보듯이 이름 뒤에 _C 를 붙였습니다.

  4. Ctrl 키를 누르고 새 변수를 그래프에 끌어놓은 다음, 거기서 끌어놓아 블루프린트의 프로퍼티에 접근합니다.

    GHT5B_10.png

    변수 이름은 Target Blueprint 로 했으며, 여기서 보면 스파크 이펙트를 끄기 위해 Get 시도하면서 블루프린트의 프로퍼티에 접근할 수 있음을 볼 수 있습니다.

  5. 그런 다음 게임 시작 2 초 후 스파크 이펙트를 비활성화시키도록 그래프를 연결합니다.

    GHT5B_11.png

  6. 컴파일 하고 에디터에서 플레이 하면 정상 작동하지 않고 오류 메시지가 나는 것을 볼 수 있습니다.

    GHT5B_12.png

    펼쳐보면...

    GHT5B_13.png

    오류에 의하면 Accessed None, 즉 없는 것을 접근하려 했는데, 블루프린트간의 통신에서 액터 레퍼런스를 처음 구하려 할 때 흔히 발생하는 오류입니다.

    Blueprint_Effect_Fire 블루프린트에서, 타깃 블루프린트를 알아낸 다음 그에 대한 변수를 만들고 스파크를 비활성화시켰으나, 변경을 적용하고자 하는 블루프린트의 실제 인스턴스 를 지정해 줘야 합니다.

    그 방법은, 변수를 퍼블릭 으로 만들어 주어 메인 에디터 창 안에서 접근할 수 있도록 해 주면, 어느 인스턴스 가 영향을 받도록 할지 선택할 수 있습니다.

  7. Blueprint_Effect_Fire 블루프린트에서, TargetBlueprint 변수 옆의 눈 아이콘을 클릭합니다.

    GHT5B_14.png

    그러면 변수가 퍼블릭 설정되어 에디터 안에서 설정할 수 있게 됩니다.

  8. 컴파일 버튼을 누른 다음 메인 에디터 창으로 돌아가서 레벨의 Blueprint_Effect_Fire 액터를 선택합니다.

  9. 디테일 패널에 이제 Target Blueprint 옵션이 있어 대상 블루프린트 액터를 선택할 수 있습니다.

    GHT5B_16.png

    드롭다운 메뉴를 사용해서 타깃 액터를 선택하거나, 스포이드 아이콘을 사용하여 씬에서 타깃 액터를 선택할 수 있습니다.

    GHT5B_17.png

  10. 타깃 액터를 설정한 채, 이제 에디터에서 플레이 해 보면, 2 초 후 스파크 이펙트가 꺼집니다.

    직접 블루프린트 통신 관련 상세 정보는 블루프린트 직접 통신, 블루프린트 통신 방법 문서를 참고하세요.

형변환 참조

직접 블루프린트 통신 방법이 레벨에 존재하는 액터 사이의 레퍼런스를 구하는 데는 괜찮지만, 레벨에 있는 액터로의 레퍼런스를 구한 다음 아직 레벨에 있지 않은 블루프린트 액터로 전달해 주고자 하는 경우가 있을 수 있습니다. 이를테면 플레이어 캐릭터(나 다른 액터)는 게임 시작 전까지는 레벨에 없겠지요. 이러한 경우, Cast To (형변환) 노드를 사용하여 타깃 블루프린트 에 레퍼런스를 전송할 수 있습니다.

  1. 레벨에 참조하고자 하는 액터를 배치합니다.

    GHT5B_18.png

  2. 레벨에 그 액터를 선택한 채, 메인 툴바의 블루프린트 버튼을 클릭한 다음, 레벨 블루프린트 열기 를 클릭합니다.

    GHT5B_2.png

  3. 우클릭 한 다음 ...로의 레퍼런스 생성 옵션을 선택합니다.

    GHT5B_19.png

  4. 우클릭 하고 Event Begin PlayGet Player Character 노드를 추가합니다.

  5. 캐릭터 블루프린트에서 참조하고자 하는 유형의 변수를 새로 만듭니다.

    GHT5B_21.png

    여기서는 ThirdPersonCharacter 안에 (참조하고자 하는 것이 화염 이펙트이므로) Blueprint_Effect_Fire_C 유형의 변수를 새로 만들어 TargetBlueprint 라 했습니다. 게임이 시작되면 레벨 블루프린트 는 레벨에 있는 액터로의 레퍼런스를 구한 다음, ThirdPersonCharacter 블루프린트로 전달하여 그 프로퍼티에 접근할 수 있도록 합니다.

  6. 변수를 그래프에 Ctrl 드래그한 다음, 거기서 끌어 프로퍼티에 접근합니다.

    GHT5B_22.png

    여기서는 플레이어가 F 키를 누르면 P_Fire 이펙트를 끕니다.

    레퍼런스를 담을 변수를 만들었지만, 아직 레벨 블루프린트 에서 그 레퍼런스를 전달해 줘야 합니다.

  7. 스크립트가 완료되면 캐릭터 블루프린트를 컴파일 한 다음, 레벨 블루프린트 를 다시 엽니다.

  8. Cast To 노드의 As My Character C 핀을 끌어놓고 Set Target Blueprint 노드를 추가합니다.

    GHT5B_23.png

    레퍼런스 노드를 Set Target Blueprint (또는 다른 변수명)의 In 핀에 꽂습니다.

  9. 컴파일 후 에디터에서 플레이 합니다.

    이 예제를 그대로 따랐다면, F 키를 누르는 순간 화염 이펙트가 꺼질 것입니다.

    액터 형변환 관련 상세 정보는 블루프린트 직접 통신, 블루프린트 통신 방법 문서를 참고하시기 바랍니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼