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. Fault Diagnosability Infrastructure Overview

    Fault Diagnosability Infrastructure Overview The fault diagnosability infrastructure aids in prevent ...

  2. ORACLE表空间bigfile和smallfile

    BIGFILE | SMALLFILE Use this clause to determine whether the tablespace is a bigfile or smallfile ta ...

  3. 【斐波拉契+数论+同余】【ZOJ3707】Calculate Prime S

    题目大意: S[n] 表示 集合{1,2,3,4,5.......n} 不存在连续元素的子集个数 Prime S 表示S[n]与之前的所有S[i]互质; 问 找到大于第K个PrimeS 能整除X 的第 ...

  4. SqlHelper数据库访问类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. js获取网页高度和宽度(备份)

    网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWi ...

  6. (转载)log4net 组件详解

    1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual S ...

  7. SQL Server 已提交读快照 测试

    1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN ' WHERE ...

  8. hibernate初体验

    简介: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使 ...

  9. autorelease方法

      基本用法: 1,autorelease 方法会返回对象本身 2,调用完autorelease方法后,对象的计数器不变 2,autorelease 会将对象放到一个自动释放池中 3,当自动释放池被销 ...

  10. thbgm拆包【in progress】

    曾经在网上找过但是没找到过....关于东方系列bgm的格式,最初以为是个加密格式,后来听说是多个wav堆到一块儿的.再后来查到有说可以用GoldWave开的.今天试了试成功了.接下来打算研究一下,不过 ...