个人资料

跳过导航链接首页 > 博客列表 > 博客正文

Unity加载AssetBundle包(四)

分类:

当把AssetBundle文件从服务器下载到本地后,需要将其加载到内存中并创建AssetBundle内存对象。

unity提供了四种方式来加载AssetBundle文件。

1.WWW.assetBundle属性

可以通过WWW.assetBundle属性创建一个assetBundle文件的内存对象,代码如下:


    IEnumerator Start()
    {
        WWW www = WWW.LoadFromCacheOrDownload("www.songshizhao.com", 5);
        yield return www;
        if (www.error!=null)
        {
            Debug.Log(www.error);
            yield break;
        }
        AssetBundle myloadedAssetBundle = new AssetBundle();
    }


2.AssetBundle.CreateFromFile

完整定义为,public static AssetBundle CreateFromFile(string path);

从磁盘文件读取对象,该方法只支持非压缩格式的AssetBundle,即打包时必须使用非压缩选项。

3.AssetBundle.LoadFromMemoryAsync

通过该接口可以创建一个异步的内存区域比如用户对AssetBundle进行加密时,可以先调用解密算法返回解密后的数据流,然后再通过AssetBundle.CreateFromMemory从数据流中创建AssetBundle对象。示例代码如下:


    IEnumerator Start()
    {
        //开始下载
        WWW www = WWW.LoadFromCacheOrDownload("www.songshizhao.com", 5);
        //等待下载完成
        yield return www;
        if (www.error != null)
        {
            Debug.Log(www.error);
            yield break;
        }
        //从bytes数组中创建AssetBundle
        AssetBundleCreateRequest assetBundleCreateRequest = AssetBundle.LoadFromMemoryAsync(www.bytes);

        yield return assetBundleCreateRequest;
        AssetBundle assetBundle = assetBundleCreateRequest.assetBundle;
    }


4.AssetBundle.LoadFromMemory


    IEnumerator Start()
    {
        //开始下载
        WWW www = WWW.LoadFromCacheOrDownload("www.songshizhao.com/nullexample.unity3d", 5);
        //等待下载完成
        yield return www;
        if (www.error != null)
        {
            Debug.Log(www.error);
            yield break;
        }
        //从bytes数组中创建AssetBundle
        AssetBundle assetBundle= AssetBundle.LoadFromMemory(www.bytes);
    }


--------------------------------------------------------------------

需要注意的是,如AssetBundle之间存在依赖关系,需要先加载总的Manifest文件,通过manifest文件加载对应的依赖文件,然后再获得AssetBundle内存对象。


下一篇:unity加载存在依赖关系的AssetBundle文件代码

songshizhao
最初发表2017/3/15 21:59:19 最近更新2017/3/15 21:59:19 9503
为此篇作品打分
10
   评论