Unity 2021.3에서 2022.3으로 업그레이드하며 겪은 문제들
모바일 슬롯 게임의 Unity 버전을 2021.3.39f1에서 2022.3.33f1로 올렸다. 엔진 변경에 따라 코드와 SDK를 맞추고, 업그레이드 후 나온 문제를 하나씩 해결했다.
API·데이터 변경 대응
섹션 제목: “API·데이터 변경 대응”- 에셋 임포트 규칙 패키지의
preloadAudio필드가 obsolete되어, 코드를 바꿔 default, Android, iOS, WebGL, Standalone 플랫폼에 각각 적용했다. EditorUserBuildSettings.il2CppCodeGeneration이 deprecated되어PlayerSettings.SetIl2CppCodeGeneration으로 바꿨다.- SpriteAtlas에
packedSpriteRenderDataKeys필드가 추가되어 초기값을 생성해 반영했다. - 프리팹 데이터의
m_RootOrder: 0은 deprecated되었다.
SDK 충돌
섹션 제목: “SDK 충돌”- AppLovin: SDK에서 크래시가 나서 최신 버전(v7.3.1, 패키지 기준 12.4.3.0 → 12.5.0.1)으로 올렸다.
- OneSignal과
com.unity.mobile.notifications: 두 패키지가 충돌한다. OneSignal 업데이트는 공수가 커서com.unity.mobile.notifications를 2.3.2에서 2.1.1로 다운그레이드해 크래시를 피했다. - UniWebView: 크래시가 나서 버전 5로 올렸다. 이에 의존하는 사내 공통 베이스 모듈과, 그 모듈에 의존하는 Google 모듈(SNS 로그인)도 함께 업데이트했다.
- IAP: Android 결제 응답 메시지 형식이 바뀌어 SDK가 파싱에 실패하면서 결제가 실패했다. 이 앱에서는 재현되지 않았지만 같은 SDK를 쓰는 다른 앱에서 발생해, IAP를 같은 버전(4.12.2)으로 맞췄다.
- 특정 iOS 기기에서 가로-세로 회전 시 앱이 멈추던 문제를 피하려고 넣어 두었던 빌드 후처리(
PostProcessIOSBuild)를 제거했다.
업그레이드 후 트러블슈팅
섹션 제목: “업그레이드 후 트러블슈팅”UI 렌더링 순서
섹션 제목: “UI 렌더링 순서”Canvas의 overrideSorting = true만으로 튜토리얼 배경 위에 그려지던 UI가 있었다. Unity 2022부터는 sortingOrder를 명시하지 않으면 렌더링 순서가 보장되지 않는다. 스크립트에서 sortingOrder를 직접 제어해 해결했다.
에셋 번들
섹션 제목: “에셋 번들”로컬 빌드 머신에서 정상적으로 임포트되지 않은 SpriteAtlas가 있었다. 원인은 확인하지 못했다. 리임포트해 해결했다.
전면 광고 시청 후 크래시
섹션 제목: “전면 광고 시청 후 크래시”인터스티셜 광고를 본 뒤 Graphics device is null. TMPro.TextMeshProUGUI:Awake() 로그와 함께 앱이 크래시했다.
- 로비 포스터의 SkeletonGraphic이 재생되지 않았다. 작업자가 입력한
startingAnimation값의 오타가 원인인 기존 문제였다. - DEBUG 빌드에만 있는 치트용 콜라이더 때문에 인게임 콜라이더가 동작하지 않는 경우가 있어 수정했다.
- 특정 슬롯 머신의 1x1 포스터 Spine 리소스가 없어 런타임 크래시가 났다.