AssetBundle的使用
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的使用的更多相关文章
- Unity3D 5.3 新版AssetBundle使用方案及策略
1.概览 Unity3D 5.0版本之后的AssetBundle机制和之前的4.x版本已经发生了很大的变化,一些曾经常用的流程已经不再使用,甚至一些老的API已经被新的API所取代. 因此,本文的主要 ...
- Unity AssetBundle爬坑手记
这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷! AssetBundle是Unity推荐的 ...
- AssetBundle
AssetBundle是Unity推荐的一种资源打包方式,与不使用AssetBundle相比,它有如下优点: 1.AssetBundle是经过LZMA压缩过的,所以体积更小. 2.可以将AssetBu ...
- 处理Assetbundle依赖关系时想到的一道题
在处理unit3d的assetbundle依赖关系的时候,想到了一道有趣的题目: 给定一堆数据,例如{A = {1, 3, 4}, B = {3, 4}, C = {5, 6}, D = {6, 7, ...
- 跟我从零基础学习Unity3D开发--资源打包篇(AssetBundle)
好久没更新了,一直在加班敢项目进度.这里和关注我的博客的童鞋表示一下歉意!这里有我录的Unity3D从零开始的视频教程大家可以关注一下:http://www.imooc.com/view/555 视 ...
- AssetBundle loading failed because.....已解决
http://blog.csdn.net/ldghd/article/details/9632455 ***************************** 一 ******* ...
- Unity5 AssetBundle
设置assetBundleName AssetImporter importer = AssetImporter.GetAtPath(p); importer.assetBundleName = x; ...
- 加载AssetBundle方法
先介绍一种常用的加载AssetBundle方法 using UnityEngine; using System.Collections; using System.IO; public class L ...
- Unity5 AssetBundle 打包以及加载
using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; us ...
- Unity 通过 www 下载 assetbundle , 在 iOS9 设备无法下载的问题
我们项目是通过 www 下载 Assetbundle 来实现热更新的, 在 iOS 8上一切正常,但在 iOS9 设备上发现无法下载,跟踪调试发现以下错误信息 “App Transport Secur ...
随机推荐
- 面向对象继承实例(a如何继承b)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- C#整理2——C#的输入输出及基本类型
//输出 Console.WriteLine("摩西摩西"); Console.Write("hollo");不带回车的 注意: 1.注意大小写敏感.(快捷键操 ...
- (转)轻量级数据库 SQLite
SQLite Expert – Personal Edition SQLite Expert 提供两个版本,分别是个人版和专业版.其中个人版是免费的,提供了大多数基本的管理功能. SQLite Exp ...
- 在CSDN上看到的一个过滤方法,感觉还不错
/// <summary> /// 把字符串中包含的敏感词替换成别的关键字 /// </summary> /// <param name="s"> ...
- Remove Element,Remove Duplicates from Sorted Array,Remove Duplicates from Sorted Array II
以下三个问题的典型的两个指针处理数组的问题,一个指针用于遍历,一个指针用于指向当前处理到位置 一:Remove Element Given an array and a value, remove a ...
- Mvc Webapi+Fiddler调试 (WebAPI 一)
Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js, ...
- html5的video标签支持的视频格式
- JS判断是否在微信浏览器打开
if (browser.versions.mobile) {//判断是否是移动设备打开.browser代码在下面 var ua = navigator.userAgent.toLowerCase(); ...
- Unicode其实是Latin1的扩展。只有一个低字节的Uncode字符其实就是Latin1字符——附各种字符编码表及转换表
一.概念 1,ASCII ASCII(American Standard Code for Information Interchange),中文名称为美国信息交换标准代码.是 ...
- ListView.setOnItemClickListener 点击无效
如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效, 事件会被子View捕获到,Li ...