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

액터 레퍼런스 Set / Get

언리얼 엔진

액터로의 레퍼런스를 구성하면, 게임플레이 도중 블루프린트나 C++ 를 통해 그 액터의 프로퍼티, 변수, 이벤트나 함수에 접근하여 게임플레이 요구에 맞게 변경하는 것이 가능합니다.

즉 예를 들어 플레이어가 트리거 박스에 들어서면 라이트를 켜고자 하는 경우, 그 라이트와 트리거 박스로의 레퍼런스를 구성하고서 그 라이트 액터를 트리거 박스의 OnComponentBeginOverlap Event 에 묶어주면 (불이 켜지게) 됩니다.

액터간의 통신에는 그 액터로의 제대로 된 레퍼런스를 구하는 것 역시도 중요합니다. 레퍼런스를 잘못 지정하면 통신에 실패하여 원치않는 결과가 날 수 있습니다.

액터로의 레퍼런스를 Get / Set 하는 예제는 아래 단계를 참고하세요.

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

  1. 모드 메뉴에서 기본 아래 박스 트리거 를 끌어 레벨에 놓습니다.

    1AddTriggerBox.png

    이 트리거를 건드리면 레벨에 있는 다른 액터가 이동되도록 하겠습니다.

  2. 박스 트리거디테일 패널에서 Convert to Class Blueprint (클래스 블루프린트로 변환)을 선택합니다.

    2ReplaceWithBlueprint.png

    이 액터에서 블루프린트 를 만들어 그 안에 액터 레퍼런스를 저장할 변수를 할당해 주도록 하겠습니다.

  3. 블루프린트 이름을 지은 다름 블루프린트 생성 을 선택합니다 (블루프린트 에디터 가 열립니다).

  4. 블루프린트 에디터에서 내 블루프린트 아래, 변수 추가 버튼을 누릅니다.

    3AddVariable.png

  5. 변수를 클릭한 다음 디테일 패널에서 변수 유형 버튼을 누르고 오브젝트 레퍼런스 아래 Actor 를 선택합니다.

    4VariableType.png

    여기서 레퍼런스가 Actor 유형이며, 레벨에 있는 오브젝트 임을 나타냅니다.

  6. 변수 이름을 TargetActor 라고 지은 뒤 Editable (편집가능) 체크박스를 클릭합니다.

    5NameVariable.png

    변수가 퍼블릭 으로 설정되어, 이 블루프린트 이외에도 메인 에디터 창에서 디테일 패널을 통해 접근 및 설정 가능함을 나타냅니다. 변수를 블루프린트 안에 들어가지 않고도 변경하고자 할 때 유용합니다.

  7. 툴팁 칸에 변수의 역할이나 용도에 대해 입력해도 좋습니다.

    7ToolTip.png

    여기서는 "The Actor to Target" 이라 입력했습니다.

  8. 블루프린트 에디터 창 좌상단의 컴파일 버튼을 클릭합니다.

    20Compile.png

    컴파일이 완료되면 초록 체크 표시로 변합니다.

    21Complete.png

  9. 블루프린트를 최소화시키고 메인 에디터 창으로 돌아와서 레벨의 박스 트리거 블루프린트를 선택합니다.

  10. 창의 디테일 패널에서, Default 아래 Target Actor 변수와 툴팁이 보일 것입니다.

    8DetailsPanel.png

  11. 콘텐츠 브라우저 에서 Content/StarterContent/Shapes 아래 Shape_Cubes 를 레벨에 세 개 추가합니다.

    9AddingAnActor.png

    별도의 프로젝트를 사용중이시라면, 아무 액터, 스태틱 메시 또는 블루프린트를 레벨에 놓아도 됩니다.

  12. 레벨에 무엇을 추가하든, 각 액터의 디테일 패널에서 모빌리티를 무버블 로 설정합니다.

    22Moveable.png

    그러면 블루프린트 스크립트를 통해 이동시킬 수 있게 됩니다.

  13. 레벨의 박스 트리거 블루프린트를 클릭합니다.

  14. 디테일 패널에서 Target Actor 아래 없음 박스를 클릭한 다음 Shape (또는 추가한 액터 이름)을 선택합니다.

    10DropDownSelection.png

    없음 을 클릭하면 현재 레벨에 있는 모든 액터가 표시되나, 방금 추가한 큐브 액터 하나를 대상으로 삼겠습니다.

  15. 확대경 아이콘 옆의 스포이드 아이콘을 클릭합니다.

    11PickActor.png

    그러면 뷰포트에서 레벨에 있는 액터를 클릭하는 것으로 타깃 액터로 선택할 수 있습니다.

  16. 스포이드 아이콘을 큐브 (또는 추가한 애셋)으로 옮긴 다음 클릭하여 타깃 액터로 만듭니다.

    11ActorSelected.png

  17. 액터를 선택하면 디테일 패널에 Target Actor 변수가 선택된 액터로 업데이트됩니다.

    13ActorSelected.png

    여기 우리 타깃 액터가 될 액터로의 레퍼런스를 Set 했습니다.

  18. Box Trigger 블루프린트를 연 다음 내 블루프린트 창에서 눈 모양 아이콘을 클릭하고 Show Inherited Variables (상속된 변수 표시) 옵션을 켭니다.

    showVariables.png

    그러면 트리거 박스를 클래스 블루프린트로 처음 전환했을 때 상속된 컴포넌트에 이벤트를 추가할 수 있습니다.

  19. Trigger Base 아래 CollisionComponent우클릭 한 다음 Event 추가OnComponentBeginOverlap 추가 합니다.

    14AddOverlap.png

    그러면 그래프에 이벤트 노드가 생성됩니다.

  20. Ctrl 키를 누른 채 TargetActor 를 그래프에 끌어 놓습니다.

    15GetActorReference.png

    그러면 레벨의 액터로 설정해 둔 변수가 무엇이든지 구해오는 Get 노드가 생성됩니다.

  21. TargetActor 노드를 끌어놓은 다음, Add Actor Local Offset 노드를 검색하여 추가합니다.

    16AddOffSet.png

    그러면 현재 타깃의 트랜스폼 추가(를 통해 현재 위치에서 이동)시키는 것이 가능합니다.

  22. 노드를 아래와 같이 연결하고, Add Actor Local Offset 노드의 Z 값을 500.0 으로 설정합니다.

    17AddZValue.png

    그러면 트리거 박스에 겹칠때마다 타깃의 현재 위치를 구한 다음 Z 축을 따라 500 만큼 위로 이동시킵니다.

  23. 컴포넌트 창에서 TriggerBox_Blueprint 를 클릭하여 선택합니다.

    selectTriggerBox.png

    컴포넌트 창이 보이지 않으면, 메뉴 옵션에서 켤 수 있습니다.

    enableComponentWindow.png

  24. 트리거 박스에 대한 디테일 패널 에서 Rendering 아래 Actor Hidden In Game (게임내 숨겨진 액터) 옵션을 켭니다.

    19ActorHiddenInGame.png

    그러면 플레이어가 어디로 들어가면 될지 확인이 가능하도록 트리거 박스가 게임내에서 보이게 됩니다.

  25. 컴파일, 저장 을 클릭한 다음 블루프린트를 닫습니다.

  26. 메인 에디터 창에서 플레이 아이콘을 클릭하여 에디터에서 플레이합니다.

트리거 박스에 들어서면, 선택된 액터가 500 유닛 위로 이동됩니다. 트리거 박스에 들어설 때마다 박스가 500 유닛씩 계속 올라갑니다. 레퍼런스 구축을 통해서 트리거 박스 스크립트에서 어떤 액터에 영향을 끼칠지 변수가 아는 것입니다. 이 스크립트를 사용해서 다른 액터에 영향을 끼쳐 보세요.

  1. 메인 에디터 창에서, 레벨 뷰포트 안의 박스 트리거 블루프린트를 클릭합니다.

  2. 박스 트리거디테일 패널에서, Target Actor 옆의 스포이드 아이콘을 클릭합니다.

    11PickActor.png

  3. 레벨 뷰포트에서 전에 사용했던 것과 다른 액터를 선택합니다.

  4. 다시 에디터에서 플레이합니다.

이번에는 트리거 박스에 들어설 때마다 새로 선택한 액터가 Z 축으로 500 유닛만큼 올라갑니다. 박스 트리거 스크립트의 Target Actor 변수를 사용함으로써, 스크립트에 특정 액터 한정이 아닌, 블루프린트 자체를 변경하지 않고도 영향을 끼칠 액터를 변경할 수 있는 것입니다.

여러 오브젝트를 움직이는 법을 보여주는 예제긴 하지만, 이 방법을 통해 오브젝트 이동 대신 플레이어가 버튼을 누르면 문을 연다든가, 불을 켜고 끈다든가, 플레이어가 집거나 부술 수 있는 아이템이 스폰된다든가, 여러가지 있을 수 있습니다.

액터에 대한 레퍼런스를 구할 수 있는 여러가지 방법 중 하나가 되기도 하는데, 예를 들어 메인 에디터 창에서는 명시적으로 설정할 수 없는 플레이어 캐릭터에 대한 레퍼런스를 구하고자 하는 경우, 다른 접근법을 취해야 할 것입니다 (아래 관련 링크 섹션 참고).