[Unity AssetBundle]Asset资源处理
什么是AssetBundle
在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载。因此,Unity引擎引入了AssetBundle这一技术来满足开发者的需求。
AssetBundle是Unity引擎提供的一种用户存储再远的文件格式,它可以存储任意一种Unity引擎能够识别的资源,例如模型、纹理、音频、动画甚至整个场景。
同时,AssetBundle也可以包含开发者自定义的二进制文件,只需要将二进制文件的扩展名改成.bytes,Unity引擎就可以识别它为TextAsset,从而就可以打包到AssetBundle文件里边。
如何创建AssetBundle
//通过该接口,开发这可以将编辑器中任意类型的Asset打包成AssetBundle文件.
BuildPipeline.BuildAssetBundle(null,null,null,null,null);
| 参数 | 解释说明 |
| mainAsset | 用于指定该AssetBundle文件中的主要资源,该资源可以通过AssetBundle.mainAsset来直接进行读取 |
| assets | 用于指定该AssetBundle文件中包含的资源 |
| pathName | 用于指定该AssetBundle文件的创建地址 |
| assetBundleOptions | 用于指定该AssetBundle文件的创建选项,默认情况下为Collect Dependencies和CompleteAssets |
| targetPlatform | 用于指定改AssetBundle文件所用于发布的平台 |
//通过该接口,开发者可以直接将项目中的一个或者若干个场景以流式加载的方式打包成AssetBundle文件。
BuildPipeline.BuildStreamSceneAssetBundle(null,null,null);
| 参数 | 解释说明 |
| levels | 用于指定要被打包进入AssetBundle文件的场景名称 |
| locationPath | 用于指定该AssetBundle文件的创建地址 |
| target | 用于指定该AssetBundle文件所用于的发布平台 |
//该接口功能与BuildPipeline.BuildAssetBundle接口相同,但是创建时可以每个Object指定一个自定义的名字
BuildPipeline.BuildAssetBundleExplicitAssetNames(null,null,null,null,null);
如何下载AssetBundle
非缓存机制
void Start () {
StartCoroutine ("LoadAsset");
}
public IEnumerator LoadAsset()
{
WWW www = new WWW (url);
yield return www;
}
缓存机制
void Start () {
StartCoroutine ("LoadAsset");
}
public IEnumerator LoadAsset()
{
WWW www = WWW.LoadFromCacheOrDownload (url, 5);
yield return www;
}
如何加载AssetBundle
WWW.assetbundle属性
void Start () {
StartCoroutine ("LoadAsset");
}
public IEnumerator LoadAsset()
{
WWW www = WWW.LoadFromCacheOrDownload (url, 5);
yield return www;
if (www.error != null) {
Debug.Log (www.error);
return;
}
AssetBundle bundle = www.assetBundle;
}
AssetBundle.CreateFromFile方法
void Start () {
AssetBundle bundle = AssetBundle.CreateFromFile (path);
}
AssetBundle.CreateFromMemory
void Start () {
StartCoroutine ("LoadAsset");
}
public IEnumerator LoadAsset()
{
WWW www = WWW.LoadFromCacheOrDownload (url, 5);
yield return www;
if (www.error != null) {
Debug.Log (www.error);
return;
}
byte[] data = www.bytes;
AssetBundle bundle = AssetBundle.CreateFromMemory(data);
}
待续...
[Unity AssetBundle]Asset资源处理的更多相关文章
- Unity AssetBundle,Asset,GameObject之间的联系
一.问题 首先,这里说明一下,我这边的GameObject有点笼统,就是表达的是游戏中的具体实例. 二.概念 1)Asset是什么? 游戏中具体的资源,像texture,mesh,material,s ...
- Unity AssetBundle 游戏资源分类及关系
--刚刚做完一个xlua的的热更项目,对AssetBundle资源分类总结一下.纯理论,闲谈知识,要是有建议,尽管提 ,不掺杂代码. --这里说说,AB是如何打包,如果下载,如何加载. 1.关键词理解 ...
- Unity AssetBundle打包资源工具
using UnityEngine;using System.Collections;using UnityEditor; /// <summary>/// 简单资源打包Editor/// ...
- Unity -- AssetBundle(本地资源加载和加载依赖关系)
1.本地资源加载 1).建立Editor文件夹 2).建立StreamingAssets文件夹和其Windows的子文件夹 将下方第一个脚本放入Editor 里面 脚本一 资源打包AssetBund ...
- Unity AssetBundle笔记
1.入门: Resources:表示U3D自动将资源打成一个AssetBundle包,所有放在Resources下的文件夹都会打成一个AssetBundle包,资源非常大,Resources文件夹在真 ...
- Unity AssetBundle爬坑手记
这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷! AssetBundle是Unity推荐的 ...
- (转)Unity AssetBundle爬坑手记
转自:http://www.cnblogs.com/ybgame/p/3973177.html 这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对Asset ...
- AssetBundle系列——资源的加载、简易的资源管理器
每个需要进行资源管理的类都继承自IAssetManager,该类维护它所使用到的所有资源的一个资源列表.并且每个资源管理类可以重写其资源引用接口和解引用接口. 每个管理器有自己的管理策略,比如Scen ...
- 【Unity3D技术文档翻译】第1.9篇 使用 Unity AssetBundle Browser tool (AssetBundle系列完结)
上一章:[Unity3D技术文档翻译]第1.8篇 AssetBundles 问题及解决方法 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced D ...
随机推荐
- 一款值得推荐的shell工具
1. 一款比较出色的shell工具 熟练的运用shell语言可以提高我们的工作效率,而一款好的shell工具能提高学习的效率,fish shell就是这样一款工具.并且是一款跨平台的工具, 同时可以在 ...
- Anton and Making Potions
Anton and Making Potions time limit per test 4 seconds memory limit per test 256 megabytes input sta ...
- How to write a probeContentType() and Usage?
Files.probeContentType() is an instance of FileTypeDetector class's abstract method String FileTypeD ...
- SwiftDate 浅析
SwiftDate是Github上开源的,使用Swift语言编写的NSDate封装库,可以很方便的在Swift中处理日期,比如日期创建,比较,输出等. 特性 支持数学运算符进行日期计算(比如myDat ...
- sql高级篇(一)
1.select top mysql中: select * from persons limit 5; 相当于oracle中的: select * from persons <=5; 在翻页中经 ...
- Flexigrid的API
基本设定 width table的长度(default:auto) height table的宽度(default:200) striped 表格的线的表示(default:true) nov ...
- Dom++完美版得到元素到html的距离6/4/21
function getTop(obj) { var pos={left:0,top:0}; while(obj) { pos.left+=obj.offsetLeft; pos.top+=obj.o ...
- 《JavaScript高级程序设计》读书笔记 ---变量
ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据.换句话说,每个变量仅仅是一个用于保存值的占位符而已.定义变量时要使用var 操作符(注意var 是一个关键字),后 ...
- RMQ 详解
RMQ(Range Minimum/Maximum Query)问题:RMQ问题是给定一个区间,求这个区间中的最大或最小值的问题 RMQ采用动态规划的思想来求解:(st算法:Square Table) ...
- Windows编译安装mod_wsgi,配合使用Django+Apahce
编译环境: 均是32位版本 Microsoft Visual Studio 10.0 Microsoft SDKs v7.1 Apache2.4 Python3.4 mod_wsgi-4.5.0 要求 ...