섹션 7 : 에셋 번들 매니저(Asset Bundle Manager)

이곳(here)에서 다운로드 받을 수 있는 에셋 번들 매니저는, 유니티에서 에셋 번들을 효율적으로 사용할 수 있도록 만들기 위해 제작한 도구이다.

 

에셋 번들 매니저 패키지를 다운로드하고 임포트하면 새로운 API 호출이 추가될 뿐만 아니라 일부 에디터 기능이 추가되어 작업과정을 간소화시켜 준다. 이기능은 Assets 메뉴 옵션에서 찾을 수 있다.

새로운 섹션에는 다음과 같은 옵션들이 포함되어 있다.

 

시뮬레이션 모드(Simulation Mode)

시뮬레이션 모드를 활성화 하면 실제로 에셋 번들을 빌드하지 않은 상태에서도 에셋 번들 관리자가 에셋 번들과 함께 작동할 수 있게 된다. 에디터는 에셋 번들에서 등록된 에셋을 확인하고 실제 에셋 번들에서 에셋을 가져오는 대신 에셋을 직접 사용한다.\

 

시뮬레이션 모드를 사용함으로서 얻을 수 있는 가장 중요한 이점은 매번 에셋 번들을 다시 빌드하고 배포할 필요없이 에셋을 수정, 업데이트, 추가 및 삭제를 할 수 있다는 점이다.

 

에셋 번들 배리언트(Variants, 변형)는 시뮬레이션 모드에서 작동하지 않는다. 배리언트(Variants, 변형)를 사용해야 하는 경우에는 로컬 에셋 번들 서버가 필요하다.

 

 

로컬 에셋 번들 서버(Local AssetBundle Server)

에셋 번들 매니저는 에디터나 로컬 빌드(모바일 포함)에서 에셋 번들을 테스트하는데 사용할 수 있는 로컬 에셋 번들 서버를 시작할 수도 있다.

 

로컬 에셋 번들 서버를 작동시키기 위해서 지켜야할 점은 다음과 같이 Assets 폴더와 같은 위치의 프로젝트 루트 디렉토리에 AssetBundles라는 폴더를 만들어야 한다는 것이다 :

폴더를 생성한 이 후에 새로 만들어진 메뉴 옵션에서 Build AssetBundles를 선택하면 에셋 번들이 이 디렉토리에 빌드된다.

 

이제 에셋 번들을 빌드(또는 시뮬레이션 모드를 사용하기로 결정)했고 에셋 번들을 불러올 준비가 되었으니 에셋 번들 매니저를 통해 사용할 수 있는 새로운 API 호출을 살펴보자.

 

 

AssetBundleManager.Initialize()

이 함수는 AssetBundleManifest 객체를 불러온다. 에셋 번들 매니저를 사용해서 에셋에서 불러오기전에 이 함수를 호출해야 한다. 이것은 아주 간단한 예제이며 에셋 번들 매니저를 초기화하는 방법은 다음과 같다.

IEnumerator Start()

{

yield return StartCoroutine(Initialize());

}

 

IEnumerator Initialize()

{

var request = AssetBundleManager.Initialize();

 

if(request != null)

{

yield return StartCoroutine(request);

}

}

에셋 번들 매니저는 Initialize() 중에 불러오는 이 매니페스트를 사용하여 종속성 관리를 비롯한 다양한 기능을 지원한다.

 

 

에셋 불러오기(Loading Assets)

씬에 할당된 에셋 번들 이름이 있는 씬을 불러와야하는 경우 약간 다른 코드 경로를 따라야 한다. 패턴은 비슷하지만 약간의 차이가 있다. 에셋 번들에서 씬을 로드하는 방법은 다음과 같다.

IEnumerator InitializeLevelAsync(string levelName, bool isAdditive)

{

// 에셋 번들로 부터 씬을 불러오기

AssetBundleLoadOperation request = AssetBundleManager.LoadLevelAsync(sceneAssetBundle, levelName, isAdditive);

 

if(request == null)

{

yield break;

}

yield return StartCoroutine(request);

}

보다시피, 씬 불러오기는 비동기적이며 LoadLevelAsync는 씬을 불러오기 위해 StartCoroutine으로 전달되어야하는 로드 조장 요청을 반환한다.

 

 

배리언트 불러오기(Loading Variants)

에셋 번들 매니저를 사용하여 배리언트을 불러와도 씬이나 에셋에서 불러와야 하는 코드는 실제로 변경되지 않는다. 모든 작업을 수행하려면 에셋 번들 매니저의 ActiveVariants 속성을 설정해야 한다.

 

ActiveVariants 속성은 문자열의 배열이다. 에셋에 할당하는 동안 생성한 배리언트의 이름을 포함하는 문자열 배열을 작성하기만 하면 된다. 다음은 HD 배리언트으로 씬 에셋 번들을 불러오는 방법에 대한 예제이다.

IEnumerator InitializeLevelAsync(string levelName, bool isAdditive, string[] variants)

{

// activeVariants를 설정

AssetBundleManager.ActiveVariants = variants;

// 에셋 번들로부터 씬 불러오기

AssetBundleLoadOperation request = AssetBundleManager.LoadLevelAsync(variantSceneAssetBundle, levelName, isAdditive);

 

if(request == null)

{

yield break;

}

yield return StartCoroutine(request);

}

문자열 배열을 전달할 곳은 코드의 다른 부분이다(아마도 버튼 클릭이나 다른 상황). 이것으로 active variants와 일치하는 에셋 번들을 불러오게 될 것이다.

 

 

[유니티 어필리에이트 프로그램]

아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Create 2D & 3D Experiences With Unity's Game Engine | Unity Pro - Unity Store

Unity Pro software is a real-time 3D platform for teams who want to design cross-platform, 2D, 3D, VR, AR & mobile experiences with a full suite of advanced tools.

store.unity.com

[투네이션]

 

-

 

toon.at

[Patreon]

 

WER's GAME DEVELOP CHANNEL님이 Game making class videos 창작 중 | Patreon

WER's GAME DEVELOP CHANNEL의 후원자가 되어보세요. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 체험을 즐길 수 있습니다.

www.patreon.com

[디스코드 채널]

 

Join the 베르의 게임 개발 채널 Discord Server!

Check out the 베르의 게임 개발 채널 community on Discord - hang out with 399 other members and enjoy free voice and text chat.

discord.com

 

반응형

+ Recent posts