블루프린트를 통해 XR 크리에이티브 프레임워크(XR Creative Framework)로 정의된 클래스 및 액터를 확장하여 버추얼 스카우팅 툴을 커스터마이징할 수 있습니다.
XR 크리에이티브 프레임워크는 언리얼 게임플레이 프레임워크와 디자인 패턴을 공유하도록 설계되었습니다. 자세한 내용은 게임플레이 프레임워크를 참조하세요.
XR 크리에이티브 프레임워크 클래스 다이어그램
새 XR 크리에이티브 모드 및 툴세트 생성하기
새 XR 크리에이티브 모드 생성하기
XR 크리에이티브 환경의 핵심 클래스는 XRCreativeMode 및 XRCreativeToolset 입니다. XRCreativeMode 에는 툴세트와 오버라이드 이벤트가 포함되어 있습니다. 기존 툴을 추가, 제거 또는 재구성하고, 새 커스텀 툴을 추가하는 커스텀 툴세트를 생성할 수 있습니다.
새 모드를 생성하는 단계는 다음과 같습니다.
- 콘텐츠 브라우저에서 추가(Add) + > 새 블루프린트(New Blueprint) 를 클릭합니다.
- 'XR 모드'를 검색하고 XRCreativeVREditorMode 를 클릭합니다.
XR 크리에이티브 모드(XR Creative Mode)에는 다음과 같은 오버라이드 가능 이벤트가 포함되어 있습니다.
EventOnEnterEventOnExitEventTick
새 XR 크리에이티브 툴세트 생성하기
XR 크리에이티브 모드에는 Toolset Class 가 포함됩니다. 이 변수에는 XRCreative Toolset 클래스의 데이터 에셋이 필요합니다.
새 툴세트를 생성하는 단계는 다음과 같습니다.
- 콘텐츠 브라우저에서 추가(Add) + > 기타(Miscellaneous) > 데이터 에셋(Data Asset) 을 클릭합니다.
- 'XR 툴세트'를 검색하고 XR 크리에이티브 툴세트(XR Creative Toolset) 를 클릭합니다.
툴세트 데이터 에셋에는 VR 에디터 모드와 XRCreativeGameMode 에서 액세스할 수 있는 다음 클래스에 대한 포인터가 포함되어 있습니다.
- 아바타(Avatar):
XRCreativeAvatar클래스의 폰입니다. 아바타는 VR 에디터 모드가 시작될 때 레벨로 스폰됩니다. 일시적으로 스폰되므로 레벨에 저장할 수 없으며 동일한 멀티 유저 세션의 다른 사용자가 볼 수도 없습니다. - 오른손 입력 매핑 컨텍스트(Right Handed Input Mapping Context): 아바타 입력 액션에 대한 데이터 에셋입니다.
- 왼손 입력 매핑 컨텍스트(Left Handed Input Mapping Context): 주로 사용하는 손이 왼쪽(Left)으로 설정된 경우 아바타 입력 액션에 대한 데이터 에셋입니다.
XRBlueprintableToolActor액터의 배열- 팔레트(Palette):
XRCreativePalette클래스의 언리얼 모션 그래픽 UI 디자이너(Unreal Motion Graphics UI Designer, UMG) 위젯입니다. 버추얼 스카우팅의 모든 메뉴 및 월드 내 UI가 포함되어 있습니다.
버추얼 스카우팅에는 두 가지 디폴트 툴세트인 Scouting_Default 및 Scouting_Basic 이 포함되어 있습니다. 둘 다 메인 메뉴와 아바타를 포함하지만 Scouting_Basic 에 포함된 툴이 더 적습니다.
새 툴 생성하기
툴 오브젝트
툴 오브젝트는 툴을 생성하는 데 필요한 다른 모든 클래스의 컨테이너입니다. 여기에는 다음의 필수 프로퍼티에 대한 필드가 포함되어 있습니다.
- 표시명(Display Name)
- 툴 액터(Tool Actor)
- 툴 뷰모델(Tool Viewmodel)
- 팔레트(Palette)(이 툴 세팅에 대한 UMG 위젯)
툴 액터 생성하기
툴 액터는 월드로 스폰되고, 월드의 다른 액터에 작용하여 함수 기능 세트를 제공한 후 다른 툴로 스왑 시 소멸됩니다.
새 툴 만들기를 시작하는 단계는 다음과 같습니다.
- 콘텐츠 브라우저에서 추가(Add) + > 새 블루프린트(New Blueprint) 를 클릭합니다.
- '툴 액터'를 검색하고 XRCreativeToolActor 를 클릭합니다.
XRCreativeToolActor 를 사용하면 런타임에만 작동하는 툴이 제공됩니다. 툴이 에디터에서만 작동하게 하려면 XRCreativeEditorUtilityToolActor 를 선택합니다.
에디터 및 런타임 둘 다를 위한 툴 생성하기
언리얼 엔진은 블루프린트 액터에 대한 두 가지 에셋 팩토리인 일반 액터 및 에디터 유틸리티 액터를 제공합니다. 에디터 유틸리티 액터는 에디터 스크립팅을 제공하는 에디터 서브시스템에 액세스할 수 있지만 일반 액터는 이 서브시스템에 액세스할 수 없습니다. 에디터 유틸리티 액터는 패키지로 만든 게임에 사용할 수 없는 에디터 전용 모듈을 참조하므로 게임 패키지로 만들 수 없습니다. 자세한 내용은 블루프린트를 사용한 언리얼 에디터 스크립팅을 참조하세요.
런타임 패키징 및 에디터 내 워크플로 둘 다를 위한 툴을 생성할 수 있습니다. 버추얼 스카우팅 시퀀서 툴에서 이 접근 방법의 예시를 확인할 수 있습니다. 툴 액터에 다음 컴포넌트가 포함되어 있습니다.
- BP_SequenceControl - 일반 블루프린트 액터 컴포넌트
- EUC_SequenceControl - 에디터 유틸리티 액터 컴포넌트
이러한 두 컴포넌트는 모두 일반 인터페이스인 BPI_SequencerControls 를 구현합니다.
이 툴은 GetControlComponent 함수를 사용하여 함수가 호출된 컨텍스트에 따라 사용해야 하는 컴포넌트를 선택합니다. 이 함수가 유효한 GameInstance 를 탐지하면 일반 블루프린트 액터가 사용됩니다. 유효한 GameInstance 가 없으면 에디터 유틸리티 액터가 사용됩니다. 유효한 GameInstance 는 PIE, -Game 및 패키지로 만든 게임에서만 사용할 수 있습니다.
입력 액션 및 입력 매핑 컨텍스트
새 입력 액션을 만들고 원하는 입력 바인딩을 사용하여 입력 매핑 컨텍스트(Input Mapping Contexts) 에 추가할 수 있습니다. 툴 액터 및 XRCreativeAvatar에 Input_Actions 를 추가하여 사용할 수 있습니다. 이러한 두 클래스는 모두 생성 시 입력용으로 사전 등록됩니다.
자세한 내용은 향상된 입력을 참조하세요.
툴 뷰모델 생성하기
XR 크리에이티브(XR Creative)에서는 UMG 뷰모델을 툴 액터와 같은 월드 내 오브젝트와 UMG 팔레트 메뉴 간에 데이터를 전달하는 수단으로 사용합니다. 뷰모델에는 다음과 같은 피처가 있습니다.
- 툴의 현재 상태를 정의하는 모든 변수에 대한 일반 클래스
- 필드 알림 시스템 UMG MVVM에는 변수가 업데이트될 때마다 발생하는 이벤트에 바인딩(등록)할 수 있는 피처가 있습니다. 이러한 피처를 사용하면 변수 업데이트를 이벤트 기반 바인딩 가능 델리게이트로 만들 수 있고, 툴을 구성하는 클래스 간에 데이터를 전달하고 공유하기 위해 형변환 또는 인터페이스를 사용하지 않아도 됩니다.
XR 크리에이티브 서브시스템에서 뷰모델의 컬렉션에 액세스할 수 있습니다. 버추얼 스카우팅에서 각 툴의 뷰모델 이름은 툴 이름을 따서 지정됩니다.
에디터 전용 툴을 생성하는 경우 'bRequiredBinding'이라는 뷰모델에 단일 부울을 추가하고 필드 노티파이로 설정합니다. 이 툴은 VR 에디터 모드에 있을 때 위젯이 뷰모델에 바인딩되도록 하는 데 사용됩니다. 런타임 전용으로 새 툴을 생성하는 경우에는 이 작업이 필요하지 않습니다.
뷰모델 리졸버 생성하기
에디터에서 팔레트 UMG 위젯과 함께 뷰모델을 사용하려면 리졸버 클래스를 생성해야 합니다.
리졸버를 생성하는 단계는 다음과 같습니다.
- 콘텐츠 브라우저에서 추가(Add) + > 새 블루프린트(New Blueprint) 를 클릭합니다.
-
'MVVM'을 검색하고 MVVMViewmodelResolver_Base 를 클릭합니다.
-
뷰모델 블루프린트에서 다음 스크린샷과 같이 오버라이드 가능 이벤트 인스턴스 생성(Create Instance) 을 구성합니다. 이 코드는 XR 크리에이티브 뷰모델 컬렉션(XR Creative Viewmodel Collection)에서 뷰모델을 얻습니다.
팔레트 생성하기
각 툴에는 메인 메뉴에서 툴의 UI를 정의하는 UMG 위젯에 해당하는 팔레트가 필요합니다. 뷰모델 리졸버를 통해 팔레트는 뷰모델 및 툴 액터와 커뮤니케이션할 수 있습니다.
팔레트 위젯을 생성하고 뷰모델에 바인딩하는 단계는 다음과 같습니다.
- 콘텐츠 브라우저에서 추가(Add) + > 유저 인터페이스(User interface) > 위젯 블루프린트(Widget Blueprint) 를 클릭합니다.
- 'XR 탭(XR tab)'을 검색하고 XRCreativePaletteToolTab 을 클릭합니다.
-
클래스 세팅에서
bCanCallInitializedWithoutPlayerContext를true로 설정합니다.
-
bRequiredVMBinding이라는 단일 부울 변수를 생성합니다.
- 뷰 바인딩(View Bindings) 탭을 열고 위젯 옆에 있는 추가(Add) (+) 버튼을 클릭합니다.
- 위젯의
bRequiredVMBinding변수와 뷰모델 클래스의bRequiredVMBinding변수 간에 새로운 바인딩을 설정합니다. -
바인딩을 위젯에 한 방향(One Way to Widget) 으로 설정합니다.
- 뷰모델(Viewmodels) 탭을 열고 뷰모델 클래스를 클릭합니다.
-
디테일(Details) 패널에서 생성 타입(Creation Type) 을 리졸버(Resolver) 로 설정하고 리졸버(Resolver) 를 뷰모델 리졸버로 설정합니다.
툴 액터(Tool Actor) 및 뷰모델을 사용하는 위젯에서 다음 다이어그램과 같이 필드 알림 델리게이트에 바인딩할 수 있습니다.
고급 주제
새 XR 크리에이티브 팔레트 시스템 생성하기
새 XR 크리에이티브 팔레트 시스템을 생성하려면 다음 클래스에서 UI를 생성해야 합니다.
XRCreativePalette: 이 클래스를 다른 모든 서브 위젯에 대한 메인 컨테이너로 사용해야 합니다.XRCreativePaletteTab: 생성하고자 하는 서브 위젯으로, 특정 툴과 연결됩니다.XRCreativePaletteToolTab: 툴과 연결된 서브 위젯입니다. 툴 오브젝트에는 이 클래스에 대한 레퍼런스가 포함됩니다.
이러한 클래스 외에 팔레트 및 팔레트 탭에서 UMG 위젯을 사용할 수 있습니다. 일반 UI 베이스 클래스에는 깔끔하고 유지 관리가 가능한 인터랙티브 UI를 빌드할 수 있는 다양한 보일러플레이트 함수 기능이 포함되어 있으므로 사용을 권장합니다.
XRCreativeAvatar
XRCreativeAvatar 클래스는 블루프린트 가능하며, 커스텀 아바타 개발을 위한 시작점이 되어 줍니다. 커스텀 아바타 생성 방법의 예제를 보려면 BP_VScoutAvatar 클래스를 참조하세요. 클래스의 콘텐츠는 다음 카테고리로 구분됩니다.
- 라이프 사이클 관리 - VR을 시작할 때 아바타를 구성하고, VR을 종료할 때 클린업
- 이동, 선택 및 시뮬레이션된 마우스 클릭에 대한 입력
- 툴 라이프 사이클 관리
- 포인터 및 코스메틱에 대한 프레임별 업데이트
- 데디케이티드 무브먼트 컴포넌트
VRPie에서 실행하기
VRPreview(VRPie)에서 버추얼 스카우팅 툴세트를 실행할 수 있습니다. 약간의 차이점이 있으며 이 경로는 아직 완전히 개발되지 않았습니다. VRPie에서는 피직스 및 콜리전과 같은 런타임 시뮬레이션 시스템에 액세스합니다.
VRMode Scouting_Default 를 사용하는 대신, VRPie를 시작할 때는 BP_VscoutGameMode 를 사용해야 합니다. 부모 클래스XRCreativeGameMode 에서 자신만의 GameMode 를 생성할 수도 있습니다. 이 클래스에는 툴 및 UI/UX를 정의하는 XRCreativeToolset 데이터 에셋의 추가된 변수와 함께 GameModeBase 의 모든 함수 기능이 있습니다. 런타임용으로 빌드하려면 XRCreativeAvatar 및 XRCreativeGameMode 를 둘 다 사용합니다.
게임 패키지로 만들기
표준 VR 개발 프로세스를 사용하여 XR 크리에이티브 환경을 게임 패키지로 만들 수 있습니다. 앞서 언급한 에디터 유틸리티 액터 및 일반 액터에 대한 고려 사항이 런타임용으로 패키지로 만들 때도 적용됩니다.