본문 바로가기

Unity

Unity AssetBundle 활용하기

728x90
반응형

초기 앱 크기를 줄이기 위해 또는 중간 업데이트를 위해 

Asset을 별도로 저장해 두었다가 필요 시 Load 하는 방법 

 

Inspector 창 하단에서 AssetBundle Name 지정

폴더 지정 후 Build Asset Bundle

using System.IO;
using UnityEditor;


public class SimpleAssetBundleBuild 
{
    [MenuItem("Assets/Build AssetBundle Test")]
    public static void Build()
    {
        var assetBundleDirectory = "./AssetsForBundle";
        if (!Directory.Exists(assetBundleDirectory))
        {
            Directory.CreateDirectory(assetBundleDirectory);
        }
        BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.iOS);
        
        EditorUtility.DisplayDialog("에셋 번들 빌드 종료", "END" , "OK");
    }

}

Application 빌드 시에는 Project 상에서 에셋번들로 빌드한 파일은 삭제 

별도 폴더에서 필요시 로드 

using UnityEngine;

public class AssetLoad : MonoBehaviour
{
    IEnumerator Start()
    {
        var ab = AssetBundle.LoadFromFile("AssetsForBundle/bundleguitar");
        if (ab == null)
        {
            yield break;
        }
        var prefab = ab.LoadAsset<GameObject>("Guitar");
        Debug.Log("Loaded");

        GameObject Guitar = Instantiate(prefab, new Vector3(17.9f, 0.578f, 15.179f), Quaternion.Euler(6.876f,33.711f,79.8f));
        
        Debug.Log("Instantiate");
  		Guitar.SetActive(false);

        yield return new WaitUntil(() => Input.GetMouseButton(0));
        Guitar.SetActive(true);


        yield return new WaitUntil(() => Input.GetMouseButton(1));
        ab.Unload(true);
        Debug.Log("Unloaded");
    }
}

 

 

Asset Bundle Load 전 / 후

728x90
반응형

'Unity' 카테고리의 다른 글

Unity 코딩 스타일 연습  (0) 2021.06.17
Voice Call 음성채팅 / Video Call 화상전화  (0) 2021.06.16
MMO server / 네트워크 엔진 검토  (0) 2021.06.04
FMOD Project 시작하기  (0) 2021.05.04
Unity 내 영상 Display  (0) 2021.05.03