Unity
Unity AssetBundle 활용하기
eastsky21
2021. 5. 11. 17:16
728x90
반응형
초기 앱 크기를 줄이기 위해 또는 중간 업데이트를 위해
Asset을 별도로 저장해 두었다가 필요 시 Load 하는 방법
폴더 지정 후 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");
}
}
728x90
반응형