Unity3d로 앱을 만들 때 품질이 좋은 에셋을 많이 쓰게 되면 용량이 점점 증가 합니다. 이것은 앱 용량의 증가로 이어져 앱을 다운로드 받을 때 시간이 오래 걸리고 앱을 설치하는데 인내심을 요구하게 됩니다. 뒤로 가기를 누를 가능성이 높아지게 되죠. 그래서, 작은 용량으로 '일단 앱을 설치하게 한 후', 앱을 사용하는 시점에 필요한 데이터를 추가로 다운로드 받게 하는 방법으로 이런 문제를 완화 시킬 수 있습니다. Asset Bundle이 꼭 그 목적을 위한 것은 아니며, 콘텐츠를 Unity에서, 어떤 조건에서 사용하던 그 상태 그대로 런타임에 불러 올 수 있다는 측면의 장점도 있습니다. 드문 드문 알고 있는데, 회사 일로 좀 살펴 봐야 할 일이 생겨 공부 겸 좀 살펴보겠습니다.
Unity 매뉴얼 : Asset Bundle
새로운 것을 제대로 공부하려고 결심을 하면, 일단 공식 매뉴얼부터 살펴 보는 것이 순서죠. 그런데, 그 공식 매뉴얼을 보는 것이 큰 장애물이 되는 경우도 많으니, 조금이라도 부담이 되면 확 넘어가버리겠다는 결심을 하여 마음의 부담을 덜어놓고 한번 살펴 보시기 바랍니다.
https://docs.unity3d.com/kr/current/Manual/AssetBundlesIntro.html
매뉴얼은 아래 목차로 구성되어 있는데, 매뉴얼 내용을 여기 그대로 옮기는 것은 의미가 없으니, 자세한 내용은 매뉴얼 내용을 보는 것이 더 좋겠고, 개괄적인 내용만 한번 정리 해 보겠습니다.
매뉴얼은 다음과 같은 내용으로 준비되어 있습니다.
- 에셋 번들 워크플로
- 에셋 번들을 위한 에셋 준비
- 에셋 번들 빌드
- 에셋 번들 종속성
- 에셋 번들의 전문적인 활용
- 에셋 번들 압축
- 에셋 번들로 패치
- 문제 해결
- 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
아래 주소를 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
Example
'공허의 유산 > 표현의 자유' 카테고리의 다른 글
[Unity3d/AssetBundle] 03. 온라인 상에 있는 Asset Bundle 다운로드하여 사용하기 (0) | 2023.03.25 |
---|---|
[Unity3d/AssetBundle] 02. Asset Bundle 사용하기 (1) | 2023.03.19 |
Unity as Library - Unity를 Android에 Activity로 사용하기 (0) | 2023.03.06 |
Unity3d에서 AAR 사용하기 실습 (1) | 2023.03.05 |
(업데이트 된) AAR 만들기 & AAR 쓰기 (2) | 2023.03.02 |
댓글