[Unity] 2017.4 LTS에서 2019.3으로 업그레이드시 발생한 이슈들
2017로 된 프로젝트를 2019.3에서 열었을 때, AssetDatabase Version 2로 에셋들을 리임포트 시킬지 여부를 묻는 것으로 시작한다.

AssetDatabase Version 2가 뭔가 했더니, 플랫폼 전환 사이에 일어나는 엄청난 리임포트 시간을 줄이기 위한 것으로 캐쉬된 리소스를 이용하여 리임포트 시간을 현저히 줄여준다고 한다 (Unity 블로그). 물론 이 기능이 잘 동작하는 지는 지켜봐야 할 일이다.
Crash
2017로 된 프로젝트를 2019 유니티로 처음 열었을 때, 모든 리소스를 임포트하는 동안 크래시가 수 차례 발생하였다. 특별히 Editor.log (..\AppData\Local\Unity\Editor\)에 노출된 에러도 없었는데, 어떤 이유인지는 모르겠지만 빈 프로젝트를 2019 유니티로 한번 열고 난 이 후에, 다시 시도해보니 2017로 된 프로젝트도 성공적으로 리소스들이 리임포트 되었다.
UnityPackageManager
더 이상 사용하지 않으므로 삭제한다. 새로이 Package폴더가 생기고, manifest.json이 자동으로 생성된다.
TextMeshPro
기존에 TextMeshPro를 사용하고 있었다면 “error:CS0433: The type ‘Task’ exists in both ‘Unity.Tasks,…” 이 발생할 수 있다. Windows > Package Manager > Text Mesh Pro 버전 1.4.1로 업그레이드하면 해결된다.
ParticleEmitter/ParticleAnimator/ParticleRenderer 클래스 삭제
위의 클래스들이 실제로 더 이상 존재하지 않기 때문에 이 클래스를 사용하는 모듈이 있다면 ParticleSystem으로 모두 변경해야 한다.
GUITexture/GUIText 클래스 삭제
GUITexture와 GUIText 클래스도 예정대로 삭제가 되었다. 그래서 각각 UI.Image 및 UI.Text 클래스로 대체하여 사용해야 한다.
Multidex의 적용
2017에서 mainTemplate.gradle로 사용하던 gradle 스크립트로는 multidex를 사용할 수 없다. 별도의 launchTemplate.gradle이 추가 되었고, multidex옵션을 launchTemplate.gradle로 옮겨야 한다. 이것과 관련된 Tread는 여기 링크를 참고하면 된다. launchTemplate.gradle 스크립트는 C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates에 있고, 이 파일을 가져와서 커스텀하게 변경시, Assets/Plugins/Android 아래에 위치시키고, PlayerSettings에 커스텀한 gradle을 사용하기 위한 세팅을 하면 된다.

launchTemplate.gradle에 multidex옵션을 추가한 스크립트는 아래와 같다.
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN apply plugin: 'com.android.application' dependencies { implementation 'com.android.support:multidex:1.0.1' implementation project(':unityLibrary') } android { compileSdkVersion **APIVERSION** buildToolsVersion '**BUILDTOOLS**' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { minSdkVersion **MINSDKVERSION** targetSdkVersion **TARGETSDKVERSION** multiDexEnabled true applicationId '**APPLICATIONID**' ndk { abiFilters **ABIFILTERS** } versionCode **VERSIONCODE** versionName '**VERSIONNAME**' } aaptOptions { noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**] ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" }**SIGN** lintOptions { abortOnError false } buildTypes { debug { minifyEnabled **MINIFY_DEBUG** useProguard **PROGUARD_DEBUG** proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG** jniDebuggable true } release { minifyEnabled **MINIFY_RELEASE** useProguard **PROGUARD_RELEASE** proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG** } }**PACKAGING_OPTIONS****SPLITS** **BUILT_APK_LOCATION** bundle { language { enableSplit = false } density { enableSplit = false } abi { enableSplit = true } } }**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**