에셋 번들 로컬 - eses beondeul lokeol

Asset, assetbundle, Bundle, LoadScene, scene, SceneManagement, Unity, 번들, 씨너스, 애셋, 애셋번들, 에셋, 에셋번들, 유니티, 장면

로컬 저장소의 에셋 번들로부터 씬을 불러오는 방법

유니티(Unity)에서 씬(Scene) 역시 에셋 번들(Asset Bundle)에 포함 될 수 있다. 그 기본적인 방법은 유니티 5.6 문서의 섹션 7에 나와있다. 하지만 그 방법은 에셋 번들 매니저(Asset Bundle Manager)를 이용해야 하는 방법이고 너무 대략적인 내용이라 따라 실행하는 데에만 많은 시행 착오를 겪게 된다. 이 문서에서는 그에 비해 비교적 간단하고 즉시 활용할 수 있는 코드를 보여주고자 한다.

다음의 내용이 알려주고자 하는 코드의 전체이다 :

using System.IO;
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class AssetLoader : MonoBehaviour

{

[SerializeField]

string[] assetBundleNames;

[SerializeField]

string assetBundleDirectory = "Assets/AssetBundles";

void Start()

{

LoadSceneFromAssetBundle("불러오고자 하는 씬의 이름", false);

}

public void LoadSceneFromAssetBundle(string sceneName, bool isAdditive)

{

// 저장한 에셋 번들로부터 에셋 불러오기

// gamescene.unity는 작성자가 로컬 저장소에 저장한 게임 씬들이 들어있는 에셋 번들이다.

AssetBundle assetBundle = AssetBundle.LoadFromFile(Path.Combine(assetBundleDirectory + "/", "gamescene.unity3d"));

// 에셋 번들 내에 존재하는 씬의 경로를 모두 가져오기

string[] scenes = assetBundle.GetAllScenePaths();

string loadScenePath = null;

foreach (string sname in scenes)

{

if (sname.Contains(sceneName))

{

loadScenePath = sname;

}

}

if (loadScenePath == null) return;

LoadSceneMode loadMode;

if (isAdditive) loadMode = LoadSceneMode.Additive;

else loadMode = LoadSceneMode.Single;

SceneManager.LoadScene(loadScenePath, loadMode);

}

}

위의 코드를 활용하면 에셋 번들에 포함된 씬을 불러오는 것이 가능해진다. 다만, 게임 씬 에셋 번들이 다른 에셋 번들에 대한 종속성(Dependencies)를 가지고 있다면 씬을 불러오기 이전에 종속성을 가지고 있는 에셋 번들들을 먼저 불러와야만 한다. 만약 그렇게 하지 않으면, 불러오지 못한 오브젝트들은 게임 씬에서 missing으로 처리되어 빈 오브젝트로 나타나게 될 것이다.

예시로 보여준 코드에서는 게임 씬 에셋 번들을 불러오고 곧바로 에셋 번들 내에 존재하는 씬의 경로를 모두 탐색해서 씬을 불러왔지만 다른 방법으로는 게임이 시작되었을 때 게임 씬 에셋 번들을 불러와서 게임 씬들의 목록을 구성한 뒤에 필요할 때마다 활용하는 방식으로 사용할 수도 있다.

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

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

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 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

에셋 번들 로컬 - eses beondeul lokeol

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

에셋 번들 로컬 - eses beondeul lokeol

[투네이션]

-

toon.at

[Patreon]

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

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

www.patreon.com

에셋 번들 로컬 - eses beondeul lokeol

[디스코드 채널]

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

에셋 번들 로컬 - eses beondeul lokeol