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 = ; i < DataShareScript.LoadedData.Count; i++)
{
print(DataShareScript.LoadedData[].name);
}
} IEnumerator LoadAssetDatas()
{
WWW www = WWW.LoadFromCacheOrDownload(baseURL + "Package", );
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 = ; i < mainObjs.Length; i++)
{
www = WWW.LoadFromCacheOrDownload(baseURL + mainObjs[i], );
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", );
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 = ; i < names.Length; i++)
{
www = WWW.LoadFromCacheOrDownload(baseURL + "AllObjects/" + names[i], );
yield return www;
AssetBundle b = www.assetBundle;
Object[] Obj = b.LoadAllAssets();
for(int j = ; 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>();
}

AssetBundle的使用的更多相关文章

  1. Unity3D 5.3 新版AssetBundle使用方案及策略

    1.概览 Unity3D 5.0版本之后的AssetBundle机制和之前的4.x版本已经发生了很大的变化,一些曾经常用的流程已经不再使用,甚至一些老的API已经被新的API所取代. 因此,本文的主要 ...

  2. Unity AssetBundle爬坑手记

    这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷!   AssetBundle是Unity推荐的 ...

  3. AssetBundle

    AssetBundle是Unity推荐的一种资源打包方式,与不使用AssetBundle相比,它有如下优点: 1.AssetBundle是经过LZMA压缩过的,所以体积更小. 2.可以将AssetBu ...

  4. 处理Assetbundle依赖关系时想到的一道题

    在处理unit3d的assetbundle依赖关系的时候,想到了一道有趣的题目: 给定一堆数据,例如{A = {1, 3, 4}, B = {3, 4}, C = {5, 6}, D = {6, 7, ...

  5. 跟我从零基础学习Unity3D开发--资源打包篇(AssetBundle)

    好久没更新了,一直在加班敢项目进度.这里和关注我的博客的童鞋表示一下歉意!这里有我录的Unity3D从零开始的视频教程大家可以关注一下:http://www.imooc.com/view/555  视 ...

  6. AssetBundle loading failed because.....已解决

    http://blog.csdn.net/ldghd/article/details/9632455 *****************************      一      ******* ...

  7. Unity5 AssetBundle

    设置assetBundleName AssetImporter importer = AssetImporter.GetAtPath(p); importer.assetBundleName = x; ...

  8. 加载AssetBundle方法

    先介绍一种常用的加载AssetBundle方法 using UnityEngine; using System.Collections; using System.IO; public class L ...

  9. Unity5 AssetBundle 打包以及加载

    using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; us ...

  10. Unity 通过 www 下载 assetbundle , 在 iOS9 设备无法下载的问题

    我们项目是通过 www 下载 Assetbundle 来实现热更新的, 在 iOS 8上一切正常,但在 iOS9 设备上发现无法下载,跟踪调试发现以下错误信息 “App Transport Secur ...

随机推荐

  1. ASP.NET State Service

    本文来自:http://www.cnblogs.com/jhxk/articles/1648194.html 这一段就是配置应用程序是如何存储Session信息的了.我们以下的各种操作主要是针对这一段 ...

  2. Elasticsearch的javaAPI之percolator

    Elasticsearch的javaAPI之percolator percolator同意一个在index中注冊queries,然后发送包括doc的请求,返回得到在index中注冊过的而且匹配doc的 ...

  3. 图的邻接表存储 c实现

    图的邻接表存储 c实现 (转载) 用到的数据结构是 一个是顶点表,包括顶点和指向下一个邻接点的指针 一个是边表, 数据结构跟顶点不同,存储的是顶点的序号,和指向下一个的指针 刚开始的时候把顶点表初始化 ...

  4. 【(阶乘的质因数分解)算组合数】【TOJ4111】【Binomial efficient】

    n<=10^6 m<=10^6 p=2^32 用unsigned int 可以避免取模 我写的SB超时 阶乘分解代码 #include <cstdio> #include &l ...

  5. .NET cookie 使用方法

    创建 C# cookie,两种方法 Response.Cookies["userName"].Value = "patrick"; Response.Cooki ...

  6. Reset Password Functionality FAQ

    In this Document   Purpose   Questions and Answers   How can users request a password reset?   How d ...

  7. protocol(协议)

      可以用来声明一大堆方法(不能声明成员变量) 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 只要父类遵守了某个协议,就相当于子类也遵守了   //定义一个名叫MyProtocol的 ...

  8. 检索n以内所有素数

    #include <iostream>#include <cmath> const int N=500000;//数组大小 using namespace std; int m ...

  9. Do Palapala (this)

    Description 伟大的中国人民有宝箱容量为S(0<=S<=20000),有m个物品(0<m<=30,每个物品有一个体积(正整数).任取若干个装入箱内,使箱子的剩余空间为 ...

  10. hdu 4709 Herding hdu 2013 热身赛

    题意:给出笛卡尔坐标系上 n 个点,n不大于100,求出这些点中能围出的最小面积. 可以肯定的是三个点围成的面积是最小的,然后就暴力枚举,计算任意三点围成的面积.刚开始是求出三边的长,然后求面积,运算 ...