Unity_AssetBundle 动态资源加载

//Editor:编辑器模式 将脚本放置在此文件夹下 编辑器模式下运行

//1.制作Prefabs       选中场景中的物体  

 1    //创建成prefab的文件夹
 2         string prefabPath = "Assets/_CreatedPrefabs/";
 3 
 4         //验证该文件夹是否存在 
 5         if (AssetDatabase.IsValidFolder(prefabPath) == false)
 6         {
 7             AssetDatabase.CreateFolder("Assets", "_CreatedPrefabs");
 8         }
 9 
10         //场景中选中的物体
11         Transform[] selectedTransform = Selection.transforms;
12 
13         //遍历选中的物体   
14         foreach (Transform tran in selectedTransform)
15         {
16             //   遍历子物体    创建成prefab
17             for (int i = 0; i < tran.childCount; i++)
18             {
19 
20                 Transform childTran = tran.GetChild(i);
21                 GameObject childgo = childTran.gameObject;
22                 string path = prefabPath +childTran.name+".prefab";
23                 PrefabUtility.CreatePrefab(path, childgo);
24 
25                 AssetBundleBuild build = new AssetBundleBuild();
26                 build.assetBundleName = childgo.name;          //设置AssetBundle名称
27                 build.assetNames = new string[] { path};        //绑定资源
28 
29                 builds.Add(build);
30             }
31         }

//2.通过生成的Prefab来制作AssetBundle

1         AssetBundleBuild[] targetBuilds = new AssetBundleBuild[builds.Count];
2 
3         for (int i = 0; i < targetBuilds.Length;i++ )
4         {
5             targetBuilds[i] = builds[i];
6         }
7 
8             BuildPipeline.BuildAssetBundles(assetBundlePath, targetBuilds);    //打包到指定路径assetBundlePath

//BuildPipeline.BuildAssetBundles("打包出来路径","目标AssetBundleBuild[]");

 //在指定文件夹下可以找到打包好的资源文件: 

//上传gem1 mod_basemeta1 到Tomcat服务器下载

//在unity中设置ProjectSetting :

//在编辑器下可以下载

 1     IEnumerator LoadAsset(string assetName)
 2     {
 3         using (WWW www = new WWW(m_pathURL + assetName))
 4         {
 5             yield return www;
 6 
 7             if (www.error != null)
 8             {
 9                 throw new Exception("www download exception:"+www.error);
10             }
11 
12             AssetBundle ab = www.assetBundle;
13 
14             string[] assetNames = ab.GetAllAssetNames();
15 
16             Debug.Log("--assetNames[0]--"+assetNames[0]);
17 
18             //存在于缓存中  
19             AssetBundleRequest request = ab.LoadAssetAsync<GameObject>(assetNames[0]);
20 
21             yield return request;
22 
23             GameObject obj = request.asset as GameObject;
24 
25             GameObject clone = Instantiate(obj);
26 
27             clone.transform.position = new Vector3(0,0,0);
28 
29         }
30     }

//调用协同程序来进行下载

//另外text文件测试:

 1     IEnumerator LoadText(string textName)
 2     {
 3         using (WWW www = new WWW(m_pathURL+textName))
 4         {
 5 
 6             yield return www;
 7 
 8             if (www.error!=null)
 9             {
10                 throw new Exception(www.error);
11             }
12 
13             Debug.Log("---www.bytesDownloaded-"+www.bytesDownloaded);
14 
15             byte[] bytes = www.bytes;
16 
17             string str = System.Text.Encoding.ASCII.GetString(bytes);
18 
19             Debug.Log(str);
20 
21         }
22     }

 

 

posted on 2016-09-19 15:44  许清池  阅读(884)  评论(0编辑  收藏  举报

导航