태그 보관물: unreal

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);

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

Unreal 안드로이드 패키징 시 필요 없는 권한 제거하기

개요

게임 개발 후 안드로이드 기기를 대상으로 패키징 후 실행해 보면 처음에 여러가지 권한을 요구하는 경우가 있습니다. 분명 게임과는 무관한 것인데 필요 이상으로 많은 항목을 요청합니다.

그 이유는 몇 가지 권한이 기본적으로 부여되어 있어 발생한 것 입니다. 꼭 필요한 항목만 포함하는 방법을 알아보도록 하겠습니다.

중간 파일 내용 확인

Intermediate\Android\arm64\AndroidManifest.xml 파일 내용 일부를 보면 다음과 같이 게임에 필요 없는 권한이 들어 있습니다(arm64 폴더는 대상 플랫폼에 따라 달라질 수 있습니다).

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

이것을 꼭 필요한 권한 WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE 만 포함하도록 변경해 보겠습니다.

ManifestRequirementsOverride.txt 파일

이곳에서 안드로이드 패키지 설정에 대한 설명을 볼 수 있습니다. 그 중 Extra Permissions 항목을 보면 <Project>/Build/Android/ManifestRequirementsOverride.txt 항목에 대한 설명이 있습니다. ManifestRequirementsOverride.txt 파일의 내용으로 대치 된다는 내용입니다.

Extra Permissions 항목에 마우스 커서를 올려보면 나타나는 설명

꼭 필요한 권한만 추가해서 깔끔하게 관리할 수 있습니다. 단순 텍스트 파일이며 필요한 권한을 다음과 같은 형식으로 추가해 주기만 하면 됩니다.

&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
&lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

이렇게 하면 두 가지 권한만 AndroidManifest.xml 파일에 추가됩니다. 이런 방법으로 필요 없는 권한은 제외하고 꼭 필요한 항목만 추가할 수 있습니다.