Unity Resources资源打包以及加载(二)

发表于2017-01-22
评论0 1k浏览

  继Unity Resources资源打包以及加载(一)后,本篇介绍的是Unity Resources资源打包以及要实现动态加载,想知道的可以看看下面是如何实现的。


  第1步,根据需要申明自己需要的临时存储结构
  //模型预制体
        Globals.assetBundle_Perfab = new Dictionary();
        //模型UI
        Globals.assetBundle_UI = new Dictionary();
        //PPT
        Globals.assetBundle_Resources_Image = new Dictionary();

        Globals.assetBundle_Resources_Audio = new Dictionary();

        #if UNITY_EDITOR
            basePath = "file://" + Application.dataPath + "/ResourcesAssetBundle/";
        #elif UNITY_ANDROID  
            basePath="file://"+Application.persistentDataPath+"/ResourcesAssetBundle/";
        #endif

  第2步,使用协同程序www加载资源
  IEnumerator LoadFromAssetBundle()
    {
        List assetBundleList = new List();

        foreach (var vp in VersionParam.vplist)
        {
            if (!vp.Filename.Contains(".manifest") && !vp.Filename.Equals("StreamingAssets"))
            {
                WWW wwwPrefab =new  WWW(@basePath + vp.Filename);

                yield return wwwPrefab;

                while (!wwwPrefab.isDone)
                {
                    message.text = message.text + "wwwPrefab return null";
                    yield return null;
                }

                if (!string.IsNullOrEmpty(wwwPrefab.error))
                {
                    message.text = message.text + "wwwPrefab error break"+wwwPrefab.error;
                    Debug.Log(wwwPrefab.error);
                    yield break;
                }
                else
                {
                    AssetBundle abPrefab = wwwPrefab.assetBundle;

                    assetBundleList.Add(abPrefab);

                    string[] type=vp.Filename.Split('_');
                    string typestr=type[type.Length-1];

                    switch (typestr)
                    {
                        case "prefab":
                            Globals.assetBundle_Perfab.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));
                            break;
                        case "ui":
                            Globals.assetBundle_UI.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));
                            break;
                 
                        case "audio":
                            Globals.assetBundle_Resources_Audio.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));
                            break;
                        case "ppt":
                            Globals.assetBundle_Resources_Image.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));
                            break;
                     
                    }

                 
                }

            }
        }

        foreach (var abl in assetBundleList)
        {
            if (abl != null)
            {
                abl.Unload(false);
            }
        }

  注意:一定要Unload。打包和加载版本对比使用了MD5。。。后续我会上传打包的同时创建MD5版本对比文件

       关于Unity Resources资源打包以及动态加载实现就介绍这么多了,希望可以帮到大家。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引