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 ...
随机推荐
- Ice_cream’s world III(prime)
Ice_cream’s world III Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Othe ...
- 在ASP.NET项目中使用CKEditor
CKEditor是什么 CKEidtor是一个在线富文本编辑器,可以将让用户所见即所得的获得编辑在线文本,编辑器或自动将用户编辑的文字格式转换成html代码. 在ASP.NET工程中添加CKEdito ...
- .NET cookie 使用方法
创建 C# cookie,两种方法 Response.Cookies["userName"].Value = "patrick"; Response.Cooki ...
- JavaScript定时机制setTimeout与setInterval研究
JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 setTimeout( ...
- 何使用CSS写出一个下拉菜单。
导航菜单是每个网站所必备的功能,也是每个学习制作网站的朋友所必须接触的,如何用css样式制作一个简单漂亮的二级下拉菜单呢? 下面为大家分享一下我的经验 方法步骤: 第一步 : 首页我们打开Subli ...
- MVC 传参
介绍一些View中常用的东西 1:传递参数: 1):路由协议中传递参数: 1):eg:比如是这样类似的路由协议,那么我们在传递参数的时候,就要传递 id过去,当然如果,ABCD= UrlParamet ...
- tomcat 发布webService
<!-- tomcat发布webservice时所需jar --> <dependency> <groupId>com.sun.xml.ws</groupId ...
- Linux自制离线源,利用百度网盘等下载离线资源
CentOS安装Axel: 目前yum源上没有Axel,我们可以到http://pkgs.repoforge.org/axel/下载rpm包安装. 32位CentOS执行下面命令: wget -c h ...
- Your build settings specify a provisioning profile with the UUID, no such provisioning profile was found的解决方案
在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no suc ...
- ubuntu 12.04 安装谷歌浏览器
http://hi.baidu.com/kevin276/item/29bc1c96a208fabc82d29542 sudo dpkg -i google-chrome-stable_current ...