Google Play에서 다운로드 App Store에서 다운로드

Unity

당신의 유니티 앱이 무거운 진짜 이유: UPM 패키지 최적화 완벽 가이드 (빌드 용량 20MB 줄이기)

정보처리마법사 2025. 8. 24. 17:32
반응형

당신의 유니티 앱이 무거운 진짜 이유: UPM 패키지 최적화 완벽 가이드 (빌드 용량 20MB 줄이기)

디지털 데이터를 청소하는 빗자루 이미지, 유니티 UPM 패키지 최적화와 빌드 용량 줄이기를 상징
불필요한 패키지를 정리하여 유니티 프로젝트의 빌드 용량을 최적화하는 모습

도입: "분명 간단한 앱인데, 왜 이렇게 용량이 크지?"

건설 현장에 있는 노란색 불도저
기존의 무거운 프로젝트를 최적화하기 위해 불필요한 부분을 걷어내는 대규모 작업.

 

Unity로 간단한 2D 정보 앱이나 캐주얼 게임을 만들고 첫 빌드를 했을 때, 생각보다 큰 앱 용량에 당황한 경험이 있으신가요? 코드는 몇 줄 없고, 사용한 이미지 리소스도 얼마 없는데 안드로이드 기준 30MB를 훌쩍 넘는 빌드 파일(.apk)을 보며 의문이 들었을 겁니다. 그 원인은 바로 우리가 무심코 지나쳤던 **UPM(Unity Package Manager)**에 숨어있을 가능성이 큽니다.

이 글에서는 Unity 프로젝트의 빌드 용량을 결정하는 핵심 요소인 UPM의 패키지들을 이해하고, 불필요한 기능들을 덜어내어 프로젝트를 가볍게 만드는 '프로젝트 다이어트' 방법을 A부터 Z까지 알려드립니다. 이 가이드만 따라오시면, 최소 15MB에서 30MB 이상의 빌드 용량을 확실하게 줄일 수 있습니다.


UPM의 두 얼굴: 빌트인(Built-in)과 레지스트리(Registry)

UPM은 Unity 에디터의 기능을 확장하는 모든 '부품(패키지)'들을 관리하는 창고입니다. 이 창고는 두 종류의 선반으로 나뉘어 있습니다.

 

다양한 종류의 소스와 양념이 담긴 작은 그릇들
프로젝트에 필요한 기능(패키지)만 선택적으로 사용하는 모습은 요리에 필요한 재료만 고르는 것과 같습니다.

  1. 빌트인(Built-in) 패키지 📦: Unity 에디터를 설치할 때부터 내장되어 있는 기본 기능들입니다. 주방에 비유하자면, 처음부터 구비된 소금, 설탕, 밀가루 같은 기본 재료와 같습니다. VR, 차량 물리, 타일맵 등 강력하지만 모든 프로젝트에 필요하지는 않은 기능들이 여기에 포함됩니다.
  2. 유니티 레지스트리(Unity Registry) ☁️: Unity가 공식적으로 제공하는 '온라인 카탈로그' 입니다. Cinemachine, Post-Processing, ProBuilder처럼 필요할 때마다 우리가 직접 '주문(설치)'해서 사용하는 기능들이죠.

설계 도면을 보며 회의하는 두 명의 엔지니어 또는 건축가
프로젝트의 설계도(manifest.json)를 검토하여 불필요한 기능(패키지)을 제거하는 과정.

 

이 모든 패키지 정보는 프로젝트 폴더 안의 Packages/manifest.json 파일에 기록됩니다. 즉, 어떤 패키지를 사용하고 있는지는 프로젝트별로 완벽하게 독립적으로 관리됩니다. A 프로젝트에서 VR 패키지를 삭제했다고 해서 B 프로젝트에 영향을 주지 않는다는 의미입니다.

 

반응형

가장 큰 오해: "그냥 using만 안 하면 되는 거 아닌가요?"

서로 등을 돌리고 있는 남녀
프로젝트 관리에서 기능의 '분리'는 중요합니다. 각 프로젝트는 독립적으로 패키지를 관리해야 합니다.

많은 개발자들이 "내 코드에서 특정 기능을 using으로 불러오지만 않으면, 빌드할 때 알아서 빠지겠지"라고 생각합니다. 이는 절반만 맞는 이야기이며, 용량 최적화에 있어 가장 큰 함정입니다.

집을 짓는 것에 비유해 봅시다. 설계도에 '수영장'이 포함되어 있다면, 당신이 실제로 수영장을 사용하든 안 하든 집을 지을 때 수영장은 만들어집니다. 당연히 집의 크기와 건축 비용(앱 용량)은 늘어납니다.

  • 패키지를 삭제하는 것: 설계도에서 '수영장' 옵션을 완전히 지워버리는 행위입니다.
  • using을 안 하는 것: 이미 만들어진 수영장을 "나는 안 써야지"라고 다짐하는 것에 불과합니다.

Unity의 빌드 과정에는 '코드 스트리핑(Code Stripping)'이라는 기술이 포함되어 있어, 사용되지 않는 C# 코드를 일부 제거해 줍니다. 하지만 패키지에는 C# 코드뿐만 아니라, 스트리핑이 어려운 네이티브 코드(C++) 라이브러리와 각종 리소스가 포함되어 있습니다. 이 부분들은 패키지를 직접 삭제하지 않는 이상 빌드에 포함될 가능성이 높습니다. 따라서 확실한 용량 감소를 위해서는 반드시 UPM에서 패키지를 직접 제거해야 합니다.


실전! 내 프로젝트 다이어트 시키기

줄자로 허리 둘레를 재며 다이어트 중인 사람
프로젝트의 군살을 빼는 다이어트, 즉 최적화를 통해 빌드 용량을 줄이는 과정.

이제 이론을 알았으니, 직접 프로젝트의 군살을 빼봅시다. '인터넷 연결 없는 2D 정보 제공 앱'을 만든다고 가정해 보겠습니다.

  1. 프로젝트 목적 정의: 내 프로젝트는 3D, 물리, VR, 비디오, 인터넷 기능이 전혀 필요 없습니다. 오직 2D UI가 전부입니다.
  2. UPM 실행: Unity 에디터 상단 메뉴에서 Window > Package Manager를 엽니다.
  3. 불필요한 패키지 삭제: Packages: In Project 리스트를 확인하고, 아래 패키지들을 과감히 'Remove' 버튼을 눌러 삭제합니다.
    • 삭제 대상 1순위 (3D/특수 기능):
      • XR, VR: VR/AR 관련 모든 기능. 모바일 빌드에서 가장 큰 용량을 차지합니다.
      • Vehicles: 자동차 물리 기능.
      • Umbra: 3D 그래픽 최적화 기능.
      • Wind: 3D 바람 효과.
    • 삭제 대상 2순위 (앱 기능에 따라):
      • Video: 동영상 재생 기능.
      • Unity Analytics: 사용자 데이터 분석 기능.
      • Unity Web Request 관련 모듈: 인터넷 통신 기능.
      • Tilemap: 2D 타일맵 게임 제작 기능.
  4. 필수 패키지 확인: 2D 정보 앱이라면 UI 패키지는 반드시 남겨두어야 합니다.

이처럼 프로젝트를 시작할 때, 가장 먼저 UPM을 열어 필요한 최소한의 기능만 남기고 모두 정리하는 습관을 들이는 것이 좋습니다.


그래서 얼마나 줄어드나요?

돼지 저금통과 학용품, 책가방
불필요한 패키지를 제거하는 것은 앱의 용량과 개발 리소스를 절약하는 첫걸음입니다.

Unity 6 버전으로 안드로이드 빌드를 가정했을 때, 최소 구성과 모든 빌트인 패키지를 포함한 빌드의 용량 차이는 약 15MB에서 30MB 이상입니다. 특히 XR/VR 관련 네이티브 라이브러리가 차지하는 비중이 매우 큽니다. 모바일 게임 시장에서 15MB는 사용자의 다운로드를 결정짓는 중요한 차이를 만듭니다.

결론: 똑똑한 패키지 관리가 곧 최적화의 핵심

빌드 용량 최적화는 어려운 셰이더 코드나 복잡한 알고리즘 수정에서만 이루어지는 것이 아닙니다. 이처럼 프로젝트의 기본 설계도인 UPM을 깔끔하게 정리하는 것만으로도 눈에 띄는 효과를 볼 수 있습니다.

지금 바로 여러분의 Unity 프로젝트를 열고, 잠자고 있던 불필요한 패키지들을 정리해 보세요. 훨씬 가볍고 빨라진 프로젝트를 만나게 될 것입니다.

 

스마트폰으로 모바일 액션 게임을 즐기는 사람
모바일 게임 최적화는 사용자의 플레이 경험에 직접적인 영향을 줍니다.

 

 

반응형
Google Play에서 다운로드 App Store에서 다운로드