태그 보관물: unity

유니티(Unity) 빌드 후 제대로 동작하지 않을 때 조치법

개요

유니티(Unity) 에디터에서 개발 중에는 문제가 없는데 대상 기기용으로 빌드하면 제대로 동작하지 않는 경우가 있습니다. 에디터 자체의 문제인지 빌드 시 옵션 문제인지 알 수 없어 당황하게 됩니다. 이럴 때 우선 스크립트 실행 순서를 명확하게 지정하면 됩니다.

이상현상

개발 중인 게임을 빌드 후 대상 기기에서 실행해 보니 이상하게 NULL 객체 참조 오류가 발생했습니다. 에디터에서 실행했을 때는 문제가 없었는데 안드로이드 기기를 개발 PC에 연결하고 빌드 후 실행을 하면 제대로 동작하지 않았습니다. 오류가 발생하면서 그 이후 처리 스크립트가 동작하지 않았습니다.

이 상태에서 에디터에서 다시 실행을 해보면 에디터에서도 동일한 현상이 나타나는 문제가 있었습니다(2021.3.9f1 기준). 잘 생각해보니 이전에도 이런 현상이 있어 스크립트가 실행되는 우선 순위를 두었던 기억이 났습니다.

스크립트 실행 순서 설정

이곳에서 자세한 설명을 확인하실 수 있습니다. Edit > Project Settings… 메뉴를 선택하고 Script Execution Order 다시 선택하면 다음과 같이 나타납니다.

Script Execution Order
Script Execution Order

원래 있던 항목들은 그대로 두고 개발 시 추가한 스크립트를 추가하면 됩니다. 대부분 게임 전반에 관한 초기화 부분이 가장 먼저 수행되도록 조정하면 됩니다. 위의 예시에서는 GameControl, PlayerFire 스크립트를 등록했습니다.

개발하신 스크립트의 구조에 따라 추가 및 조정을 하시면 되는데 그래도 해결이 되지 않으신다면 구조를 명확하게 정리하시는 것을 추천드립니다.

많은 클래스에서 서로 많이 참조하게 되면 스크립트 실행 순서를 조정해도 해결되지 않을 수도 있습니다. 기능을 구현하는 것도 중요하지만 각 기능별로 잘 구분해서 미리 작업해 두어야 나중에 많은 시간을 절약할 수 있습니다.

유니티(Unity) 안드로이드 빌드 이름 다국어 지원

개요

게임 개발이 완료되고 대상 기기에 설치되었을 때 사용자가 설정한 언어로 앱 이름이 나타나면 더 좋은 인상을 줄 수 있습니다. 안드로이드로 빌드 했을 때 원하는 언어로 앱 이름을 설정하는 방법을 알아보도록 하겠습니다. Localization 패키지를 이용합니다.

Localization 패키지

다국어 지원을 위해서 Localization 패키지를 설치해야 합니다. Window > Package Manager 메뉴를 선택하면 창이 나타나고 다음 이미지와 같이 + 버튼을 클릭해서 Add package from git URL… 을 선택합니다.

Add package from git URL... 선택
Add package from git URL… 선택

입력란에 com.unity.localization 을 입력하고 Add 버튼을 클릭합니다.

git URL 입력
git URL 입력

Unity Registry에서 검색하면 1.3.2 버전이 나타나는데 버그가 있어 다국어 관련 항목이 나타나지 않는 문제가 있습니다. 글 작성일 기준으로 1.3.2 버전은 Editor 2021.3.9f1, 2022.2.15f1 모두 같은 오류가 있었습니다. Add package from git URL… 을 선택하면 1.4.3 버전이 설치됩니다.

Localization 관련 항목 추가

Window > Asset Management > Localization Tables 메뉴를 선택합니다. 창이 나타나지만 아무것도 없는 상태입니다. Create 버튼을 클릭합니다. 폴더를 하나 생성하고 저장합니다.

등록된 자료가 없는 상태
등록된 자료가 없는 상태

그런 후 New Table Collection 탭을 선택합니다. Locale Generator 버튼을 클릭합니다.

New Table Collection 탭 선택
New Table Collection 탭 선택

창이 나타나는데 원하는 언어를 선택합니다. Generate Locales 버튼을 클릭합니다. 폴더를 지정하면 작업에 필요한 파일이 생성됩니다.

Locale Generator

New Table Collection 탭의 Create 버튼을 클릭합니다. 폴더를 선택하면 다음과 같은 화면이 나타납니다.

Entry 추가 전 화면
Entry 추가 전 화면

Add New Entry 버튼을 클릭합니다. Key는 app_name 을 입력하고 각각의 언어에 원하는 앱 이름을 입력합니다.

app_name key 추가
app_name key 추가

폴더내의 Localization Settings 파일을 선택하면 Inspector에 다음과 같이 나타납니다. List is Empty 아래 + 버튼을 클릭합니다. Android > App Info 를 선택합니다.

Inspector 항목
Inspector 항목

Inspector에서 추가된 Android App Info 항목을 펼쳐보면 다음과 같이 나타납니다.

추가된 Android App Info 항목

Display Name 의 None(String) 을 클릭하면 table entry 를 선택할 수 있습니다.

table entry 선택
table entry 선택

app_name 을 선택하면 다음과 같이 변경된 것을 알 수 있습니다. Localization Package 1.3.2 버전의 경우 None 만 나타나서 추가된 entry를 선택할 수 없는 문제가 있습니다. 그래서 더 이상 진행이 불가능 합니다.

app_name entry 선택 후 변경된 사항
app_name entry 선택 후 변경된 사항

이 상태에서 빌드하고 설치해보면 앱 이름이 지정한 대로 나타나는 것을 확인하실 수 있습니다.

문제점

필자가 확인한 바로는 글 작성 일자 기준으로 동일한 조건에서 Localization 패키지를 추가해서 앱 이름 정보와 함께 빌드하면 10MB 정도 용량이 늘어나는 현상이 있었습니다. 명확하게 어떤 이유 때문에 그런 것인지는 알아내지 못했습니다. 앱의 기본용량이 작은 경우 문제가 될 것 같다는 생각이 들었습니다. 참고하시기 바랍니다.