Unity5 AssetBundle 񃧯1

À¯´ÏƼ5¿¡¼­ ¾î¼Â¹øµéÀ» »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ °£·«ÇÏ°Ô ¾Ë¾Æº¸ÀÚ.
°£´ÜÇÏ°Ô ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë¾Æº¸±â À§ÇÑ ÀåÀÌ´Ù.

¸Þ´º > GameObject > UI > ImageÀÇ Image¸¦ ´Ù¿î·Îµå ¹Þ¾Æ¼­ ±³Ã¼ Çغ¸ÀÚ.

¾î¼Â¹øµé ij½Ì »èÁ¦

¿¡¼Â¹øµéÀ» Å×½ºÆ® ÇÒ¶§ ij½¬¸¦ Áö¿ì´Â ÇÔ¼ö´Â ´ÙÀ½°ú °°´Ù.

Caching.CleanCache()

À¯´ÏƼ ¿¡µðÅÍ¿¡¼­ Å×½ºÆ® Çϱâ À§ÇØ Editor Æú´õ ¾Æ·¡¿¡ µÐ´Ù.
[EditorUtil.cs ¼Ò½º]
using UnityEngine;
using UnityEditor;

public class EditorUtil : MonoBehaviour {
    [MenuItem("Util/CleanCache")]
    public static void CleanCache()
    {
        if (Caching.CleanCache())
        {
            EditorUtility.DisplayDialog("Alarm", "Succeeded in deleting Caching.", "OK");
        }
        else
        {
            EditorUtility.DisplayDialog("Error", "Failed to delete Caching.", "OK");
        }
    }
}

¾î¼Â¹øµé ºôµå

¾î¼Â¹øµéÀ» °£´ÜÇÏ°Ô ¸¸µé¾î º¸°í Å×½ºÆ® Çϱâ À§ÇØ ºôµå ¿É¼ÇÀº µðÆúÆ®·Î ¼³Á¤ ÇÑ´Ù.
BuildAssetBundleOptions.DeterministicAssetBundle ¿É¼ÇÀº »ç¿ë ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.



ÇÁ·ÎÁ§Æ® ºä¿¡¼­ ¸®¼Ò½º¸¦ ¼±ÅÃÇÏ¸é ¾î¼Â¹øµé À̸§À» ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
¾î¼Â¹øµé À̸§À» »õ·Î ¸¸µé°Å³ª ±âÁ¸ÀÇ À̸§À» »ç¿ëÇÒ¼ö ÀÖ´Ù.
".unity3d" È®ÀåÀÚ´Â ¾ÈºÙ¿©µµ »ó°ü ¾ø´Ù.

[CreateAssetBundles.cs ¼Ò½º]
using UnityEngine;
using UnityEditor;
using System.IO;

public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        BuildPipeline.BuildAssetBundles("AssetBundles/Android", BuildAssetBundleOptions.None, BuildTarget.Android);
    }

    [MenuItem("Assets/streamingAssetsPath Assetbundle")]
    static void Export()
    {
        if (!Directory.Exists(Application.streamingAssetsPath))
            Directory.CreateDirectory(Application.streamingAssetsPath);
        BuildPipeline.BuildAssetBundles(Application.streamingAssetsPath, BuildAssetBundleOptions.None, BuildTarget.Android);
    }
}

¾î¼Â¹øµé ´Ù¿î·Îµå

¾î¼Â¹øµéÀ» ´Ù¿î·Îµå ¹Þ´Â ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.
LoadAssetBundleCoroutine ÇÔ¼ö¿¡¼­ imagebox.unity3d ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ´Â´Ù.
GetSpriteFromAssetBundle ÇÔ¼ö¿¡¼­ Sprite¸¦ ¸®ÅÏÇÏ°í ÀÖ´Ù.

[AssetBundleManager.cs ¼Ò½º]
using UnityEngine;
using System;
using System.Collections;

public class AssetBundleManager : MonoBehaviour
{
    private AssetBundle assetBundleCache;

    public IEnumerator LoadAssetBundleCoroutine()
    {
        while (!Caching.ready)
            yield return null;

        var url = "";
#if UNITY_ANDROID
        url = "http://127.0.0.1:8080/imagebox.unity3d";
#else
#endif

        var www = WWW.LoadFromCacheOrDownload(url, 1);
        while (!www.isDone)
        {
            yield return null;
        }

        assetBundleCache = www.assetBundle;
        www.Dispose();
    }

    public Sprite GetSpriteFromAssetBundle(string assetName)
    {
        try
        {
            return assetBundleCache.LoadAsset<Sprite>(string.Format("{0}.png", assetName));
        }
        catch (NullReferenceException e)
        {
            Debug.Log(e.ToString());
            return null;
        }
    }
}

ÀνºÆåÆ®ºä¿¡¼­ AssetBundleManager¿Í Image¸¦ µå·¡±×ÇÏ¿© ¼³Á¤ÇÑ´Ù.

[SceneController.cs ¼Ò½º]
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class SceneController : MonoBehaviour
{
    public AssetBundleManager assetBundleManager;
    public Image image;

    public void Awake()
    {
    }

    public IEnumerator Start()
    {
        yield return StartCoroutine(assetBundleManager.LoadAssetBundleCoroutine());
        image.sprite = assetBundleManager.GetSpriteFromAssetBundle("test00");
    }
}

ÇÁ·ÎÁ§Æ® ´Ù¿î·Îµå : AssetTest.zip

ÂüÁ¶)
http://slway000.tistory.com/21