본문 바로가기
공허의 유산/표현의 자유

[Unity3d/AssetBundle] 01. Asset Bundle 만들기

by 바른생활머시마 2023. 3. 18.
728x90

Unity3d로 앱을 만들 때 품질이 좋은 에셋을 많이 쓰게 되면 용량이 점점 증가 합니다. 이것은 앱 용량의 증가로 이어져 앱을 다운로드 받을 때 시간이 오래 걸리고 앱을 설치하는데 인내심을 요구하게 됩니다. 뒤로 가기를 누를 가능성이 높아지게 되죠. 그래서, 작은 용량으로 '일단 앱을 설치하게 한 후', 앱을 사용하는 시점에 필요한 데이터를 추가로 다운로드 받게 하는 방법으로 이런 문제를 완화 시킬 수 있습니다. Asset Bundle이 꼭 그 목적을 위한 것은 아니며, 콘텐츠를 Unity에서, 어떤 조건에서 사용하던 그 상태 그대로 런타임에 불러 올 수 있다는 측면의 장점도 있습니다. 드문 드문 알고 있는데, 회사 일로 좀 살펴 봐야 할 일이 생겨 공부 겸 좀 살펴보겠습니다.

 

 

Unity 매뉴얼 : Asset Bundle

 새로운 것을 제대로 공부하려고 결심을 하면, 일단 공식 매뉴얼부터 살펴 보는 것이 순서죠. 그런데, 그 공식 매뉴얼을 보는 것이 큰 장애물이 되는 경우도 많으니, 조금이라도 부담이 되면 확 넘어가버리겠다는 결심을 하여 마음의 부담을 덜어놓고 한번 살펴 보시기 바랍니다.

 

https://docs.unity3d.com/kr/current/Manual/AssetBundlesIntro.html

 

에셋 번들 - Unity 매뉴얼

에셋 번들 은 플랫폼별 비코드 에셋(예: 모델, 텍스처, 프리팹, 오디오 클립, 씬 전체)이 들어 있는 아카이브 파일이며 런타임 시점에 로드할 수 있습니다. 에셋 번들에는 서로 종속성을 표시할

docs.unity3d.com

 

 매뉴얼은 아래 목차로 구성되어 있는데, 매뉴얼 내용을 여기 그대로 옮기는 것은 의미가 없으니, 자세한 내용은 매뉴얼 내용을 보는 것이 더 좋겠고, 개괄적인 내용만 한번 정리 해 보겠습니다.

 

매뉴얼은 다음과 같은 내용으로 준비되어 있습니다.

 

  • 에셋 번들 워크플로
  • 에셋 번들을 위한 에셋 준비
  • 에셋 번들 빌드
  • 에셋 번들 종속성
  • 에셋 번들의 전문적인 활용
  • 에셋 번들 압축
  • 에셋 번들로 패치
  • 문제 해결
  • Unity 에셋 번들 브라우저 툴
  • 에셋 번들 다운로드 무결성 및 보안

 

여기서는 매뉴얼을 참고하되, 빠르게 맛을 볼 수 있는 순서로 살펴보겠습니다.

 

 

Asset Bundle로 만들 수 있는 것과 없는 것.

 Unity 프로젝트에서 사용하는 리소스나 게임오브젝트 등을 Asset Bundle로 만들 수 있습니다. 

 그러나!!!!

 C# 스크립트 파일은 Asset Bundle에 포함되지 않습니다.

 다양한 로직을 Asset Bundle에 담아, Asset Bundle만 업데이트 하면 새로운 로직을 앱 재배포 없이 쉽게 배포 할 수 있을 것으로 생각했는데, 안타깝게도 C# 스크립트는 Asset Bundle에 포함되지 않습니다.

그런데!!!!

방법을 찾아보다 보니, Visual Script라는 형태로, Asset Bundle에 로직을 포함 할 수 있습니다. 테스트로 한번 해 봤는데 실제로 가능했습니다. 이전에 Bolt라는 이름의 별도 Asset으로 사용되던 기술인데, 지금은 Unity의 정식 기술로 포함되어 있습니다.  그것도 나중에 살펴보도록 하겠습니다.

 

 

 

Asset Bundle 만들기 - 사용 될 프로젝트 준비

 꼭 그래야 하는 것은 아니지만, Asset Bundle이 로딩되어 사용 될 상태의 프로젝트에서, 해당 Asset들이 제대로 사용되는 것을 확인하고, 그 대상들을 모아서 Asset Bundle을 만들어 주도록 하겠습니다. 예로써, 그냥 빈 공간에 바닥을 하나 만들고, 빨강/노랑/파랑의 육면체/구/캡슐 형상을 만들어 줍니다. 이 세개를 Prefab으로 만들고 이것들을  Asset Bundle이 될 오브젝트라고 가정하겠습니다.

 

 

 

 

Asset Bundle Browser

 매뉴얼 내용을 보면 Asset Bundle을 빌드하기 위해 매뉴를 추가하고 빌드를 실행하는 스크립트를 작성하는 내용이 있습니다. 그러나, Asset Bundle Browser라는 툴을 설치하면 GUI를 통해서 편리하게 할 수 있습니다. 예전에는 이것도 따로 설치를 해줘야했으나, 이제는 Unity의 Package Manager를 통해서 쉽게 설치 할 수 있고, 이 내용도 매뉴얼에 포함되어 있습니다.

https://docs.unity3d.com/kr/current/Manual/AssetBundles-Browser.html

 

Unity 에셋 번들 브라우저 툴 - Unity 매뉴얼

에셋 번들 브라우저를 사용하여 Unity 프로젝트의 에셋 번들 설정을 확인하고 편집할 수 있습니다.

docs.unity3d.com

 

아래 주소를 package manager (Windows > Package Manager)를 받을 수 있는 URL에 추가(좌측 상단 + 버튼 >  git url 입력 옵션 선택)하여 설치하면 됩니다.

https://github.com/Unity-Technologies/AssetBundles-Browser.git

 

반응형

 

 

 

Asset Bundle Package 설정

 

Asset Bundle은 여러 개의 에셋을 묶은(라면 번들 포장처럼...) 단위라서, 여러 개의 에셋을 하나의 Asset Bundle로 묶어서(Packaging) 만듭니다. 이 과정을 빌드한다고 하며, 위에서 설치한 Asset Bundle Browser로 쉽게 할 수 있습니다. 우리가 할 일은 Asset Bundle로 묶을 대상에 Asset Bundle 이름을 부여하는 것이며, 그 이후 빌드는 툴이 쉽게 해 줍니다.

 

먼저 할 일은 Asset Bundle로 묶을 오브젝트들에게 Asset Bundle 이름을 부여하는 것입니다.

이것은 대상 오브젝트를 Project 폴더에서 선택하면 우측 Inspector에 그 정보가 보이며, 가장 아래쪽에 Asset Bundle 정보가 표시 되는데, 여기에 입력하면 됩니다. 이미 만들어진 Asset Bundle Package 이름이 있다면 선택을 할 수 있고, 없다면 새로 만들어 등록을 할 수 있습니다.

 

 

Asset Bundle 빌드하기

 이제는 처음에 추가한 Asset Bundle Browser를 실행하면, 등록 된 Asset Bundle 목록이 좌측에 나타나며, 선택을 하면 거기 포함 된 오브젝트들과 그 오브젝트가 사용하는 다른 에셋(이 예의 경우, material)도 자동으로 포함 된 목록이 오른쪽에 나타납니다. 이상이 없으면 빌드를 누릅니다.

 

상단 가운데 있는 Build를 누르면 아래 그림과 같이 빌드 된 결과가 저장 될 경로가 표시되며, 기타 옵션을 설정 할 수 있습니다. 가장 아래 Build를 누르면 실제로 빌드 과정이 진행 됩니다.

 

결과물은 위에서 지정 된 경로에 파일로 만들어져 있습니다.

 

다음에는 이 에셋을 스크립트를 이용하여 런타임에 Scene에 추가하는 방법을 알아보겠습니다.

 

프로젝트 : https://github.com/red112/unity_asset_bundle

 

GitHub - red112/unity_asset_bundle: Unity Asset Bundle

Unity Asset Bundle. Contribute to red112/unity_asset_bundle development by creating an account on GitHub.

github.com

 

Example

https://youtu.be/fjz1oBymVkc

 

728x90
반응형

댓글