标签:
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
public class EditorPackageScript : EditorWindow
{
private static EditorPackageScript myWindow;
[MenuItem("Resource/PackageWindow")]
static void Package()
{
myWindow = EditorWindow.GetWindow(typeof(EditorPackageScript), false, "Bundle") as EditorPackageScript;
}
private Object[] SelelctObjs;
void OnGUI()
{
if(GUI.Button(new Rect(0,20, Screen.width/2, 30),"PackageToOne"))
{
SelelctObjs = Selection.objects;
PackageToOne();
}
if (GUI.Button(new Rect(0, 70, Screen.width / 2, 30), "PackageToEvery"))
{
SelelctObjs = Selection.objects;
PackageToEvery();
}
}
private void PackageToOne()
{
AssetBundleBuild[] bundles = new AssetBundleBuild[1];
string[] names = new string[SelelctObjs.Length];
for (int i = 0; i < SelelctObjs.Length; i++)
{
names[i] = AssetDatabase.GetAssetPath(SelelctObjs[i]);
}
bundles[0].assetBundleName = "SelectAllObjs";
bundles[0].assetNames = names;
if (!Directory.Exists(Application.dataPath + "/Package"))
{
Directory.CreateDirectory(Application.dataPath + "/Package");
}
if(!Directory.Exists(Application.dataPath + "/Package/AllObjects"))
{
Directory.CreateDirectory(Application.dataPath + "/Package/AllObjects");
}
BuildPipeline.BuildAssetBundles(Application.dataPath + "/Package/AllObjects", bundles);
}
private void PackageToEvery()
{
AssetBundleBuild[] bundles = new AssetBundleBuild[SelelctObjs.Length];
for (int i = 0; i < SelelctObjs.Length;i++)
{
string[] names = new string[1];
names[0] = AssetDatabase.GetAssetPath(SelelctObjs[i]);
bundles[i].assetNames = names;
bundles[i].assetBundleName = SelelctObjs[i].name;
}
if (!Directory.Exists(Application.dataPath + "/Package"))
{
Directory.CreateDirectory(Application.dataPath + "/Package");
}
BuildPipeline.BuildAssetBundles(Application.dataPath + "/Package", bundles);
}
}
using UnityEngine; using System.Collections; using UnityEditor; public class DownloadAssetDate : MonoBehaviour { private string baseURL; void Start() { Caching.CleanCache(); baseURL = "file:///" + Application.dataPath + "/Package/"; //基础路径 StartCoroutine(LoadAssetDatas()); //加载各个打包的资源 StartCoroutine(LoadAssetData()); //加载成打包成为一个的资源 for(int i = 0; i < DataShareScript.LoadedData.Count; i++) { print(DataShareScript.LoadedData[0].name); } } IEnumerator LoadAssetDatas() { WWW www = WWW.LoadFromCacheOrDownload(baseURL + "Package", 1); yield return www; if (www.error != null) //出现错误信息 { DataShareScript.errorMessage = www.error; yield break; } AssetBundle mainBundle = www.assetBundle; AssetBundleManifest mainfest = mainBundle.LoadAsset("AssetBundleManifest") as AssetBundleManifest; string[] mainObjs = mainfest.GetAllAssetBundles(); for (int i = 0; i < mainObjs.Length; i++) { www = WWW.LoadFromCacheOrDownload(baseURL + mainObjs[i], 1); yield return www; if (www.error != null) //出现错误信息 { DataShareScript.errorMessage = www.error; yield break; } AssetBundle bundle = www.assetBundle; Object obj = bundle.LoadAsset(mainObjs[i]); DataShareScript.LoadedData.Add(obj); } } IEnumerator LoadAssetData() { WWW www = WWW.LoadFromCacheOrDownload(baseURL + "AllObjects/AllObjects", 1); yield return www; if (www.error != null) //出现错误信息 { DataShareScript.errorMessage = www.error; yield break; } AssetBundle bundle = www.assetBundle; AssetBundleManifest mainFest = bundle.LoadAsset("AssetBundleManifest") as AssetBundleManifest; string[] names = mainFest.GetAllAssetBundles(); for (int i = 0; i < names.Length; i++) { www = WWW.LoadFromCacheOrDownload(baseURL + "AllObjects/" + names[i], 1); yield return www; AssetBundle b = www.assetBundle; Object[] Obj = b.LoadAllAssets(); for(int j = 0; j< Obj.Length; j++) { DataShareScript.LoadedData.Add(Obj[i]); } } } }
using UnityEngine; using System.Collections; using System.Collections.Generic; public class DataShareScript //用来让各个脚本之间的变量共享 { public static string errorMessage; public static List<Object> LoadedData = new List<Object>(); }
标签:
原文地址:http://www.cnblogs.com/ZhiXing-Blogs/p/4997624.html