태그 보관물: unreal

야광봉 2

개요

기존에 만들었던 야광봉 앱은 막대모양으로 되어 있어 좀 단순했습니다. 그리고 색상도 정해진 것만 선택할 수 있는 단점이 있었습니다. 야광봉의 모양과 색상을 선택할 수 있도록 하면 좋겠다는 생각이 들어 제작하게 되었습니다.

개발도구

야광봉 2 는 Unreal 로 개발 했습니다. Unity 와 비슷한 점도 있었지만 생각보다 시간이 많이 소요되었습니다. 하지만 Unreal 에 많이 익숙해 질 수 있는 기회였습니다.

과정

휴대전화에 표시될 야광봉의 모양을 먼저 정했습니다. 기본 막대모양, 도형, 여러가지 모양을 추가하기로 하고 간단하게 3D 모델링을 진행했습니다.

설정 화면에서 모양과 색상을 변경하면 미리보기 기능이 있어야 사용자 입장에서 편리할 것 같아 많은 시간을 투자했습니다. UMG 로 설정 화면을 디자인하는 것은 어렵지 않았습니다. 그런데 Mesh 를 미리보기 하는 기능을 넣는 것은 생각보다 쉽지 않았습니다.

UMG에서 Mesh 미리보기

핵심은 SceneCaptureComponent2D 였습니다. Mesh를 캡쳐해서 이미지 형태로 보여주는 방식으로 미리보기를 구현했습니다.

야광봉 2 설정 화면

부가 기능

밝기와 크기도 조절할 수 있도록 해서 다양한 모양, 색상, 크기를 지원하도록 했습니다. 그리고 설정된 사항을 즐겨찾기로 저장해서 쉽게 원하는 형태를 선택할 수 있도록 했습니다. 이전 앱과 같이 잠금 버튼을 추가해서 의도하지 않은 터치가 발생하지 않도록 했습니다.

눈 결정모양

여기에서 앱 정보를 확인하실 수 있습니다. 유료 앱 입니다.

Unreal LoadObject 함수 변수 사용

개요

Unreal 에서 애셋 참조 방법이 여러가지 있습니다. 그 중 LoadObject 함수를 사용하여 경로를 인수로 지정하면 참조 가능합니다. 그런데 상황에 따라 여러가지 애셋을 조건에 따라 참조해야 하는 경우가 있습니다. 이럴 때 어떻게 해야 하는지 알아보도록 하겠습니다.

LoadObject 기본 사용 법

LoadObject 의 기본 사용법을 찾아보면 다음과 같이 되어 있는 경우가 많습니다.

GridTexture = LoadObject<UTexture2D>(NULL, TEXT("/Engine/EngineMaterials/DefaultWhiteGrid.DefaultWhiteGrid"), NULL, LOAD_None, NULL);

TEXT … 이 부분이 하드코딩 되어있는 형태임을 알 수 있습니다. 상황에 따라서 변수로 치환해서 사용하면 코드를 많이 줄일 수 있습니다.

변수 사용 방법

사용할 애셋을 선택하고 우측 마우스 버튼을 클릭하면 다음의 메뉴가 나타납니다.

애셋을 선택 후 마우스 우측 버튼을 클릭하면 나타나는 메뉴

Copy Reference 를 선택하면 다음과 같은 형태의 문자열이 복사됩니다.

/Script/Engine.DataTable'/Game/YourGame/Core/Stage01.Stage01'

위에서 예로 든 문자열에서 Stage01 부분의 숫자를 변수 형태로 바꾸어 참조하면 다음과 같습니다.

FString StageString = "";
//Set your StageString
...
FString StageReference = "/Script/Engine.DataTable'/Game/YourGame/Core/Stage" + StageString + ".Stage" + StageString + "'";
UDataTable* StageDataTable = LoadObject<UDataTable>(NULL, *StageReference, NULL, LOAD_None, NULL);

이렇게 하면 상황에 따라 유연하게 애셋을 참조할 수 있습니다.