什么是AssetBundle

在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载。因此,Unity引擎引入了AssetBundle这一技术来满足开发者的需求。

AssetBundle是Unity引擎提供的一种用户存储再远的文件格式,它可以存储任意一种Unity引擎能够识别的资源,例如模型、纹理、音频、动画甚至整个场景。

同时,AssetBundle也可以包含开发者自定义的二进制文件,只需要将二进制文件的扩展名改成.bytes,Unity引擎就可以识别它为TextAsset,从而就可以打包到AssetBundle文件里边。

如何创建AssetBundle

//通过该接口,开发这可以将编辑器中任意类型的Asset打包成AssetBundle文件.
BuildPipeline.BuildAssetBundle(null,null,null,null,null);
BuildAssetBundle的参数
 参数 解释说明
mainAsset 用于指定该AssetBundle文件中的主要资源,该资源可以通过AssetBundle.mainAsset来直接进行读取
assets   用于指定该AssetBundle文件中包含的资源
pathName 用于指定该AssetBundle文件的创建地址
assetBundleOptions 用于指定该AssetBundle文件的创建选项,默认情况下为Collect Dependencies和CompleteAssets
targetPlatform 用于指定改AssetBundle文件所用于发布的平台
//通过该接口,开发者可以直接将项目中的一个或者若干个场景以流式加载的方式打包成AssetBundle文件。
BuildPipeline.BuildStreamSceneAssetBundle(null,null,null);
BuildStreamedSceneAssetBundle
参数 解释说明
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资源处理的更多相关文章

  1. Unity AssetBundle,Asset,GameObject之间的联系

    一.问题 首先,这里说明一下,我这边的GameObject有点笼统,就是表达的是游戏中的具体实例. 二.概念 1)Asset是什么? 游戏中具体的资源,像texture,mesh,material,s ...

  2. Unity AssetBundle 游戏资源分类及关系

    --刚刚做完一个xlua的的热更项目,对AssetBundle资源分类总结一下.纯理论,闲谈知识,要是有建议,尽管提 ,不掺杂代码. --这里说说,AB是如何打包,如果下载,如何加载. 1.关键词理解 ...

  3. Unity AssetBundle打包资源工具

    using UnityEngine;using System.Collections;using UnityEditor; /// <summary>/// 简单资源打包Editor/// ...

  4. Unity -- AssetBundle(本地资源加载和加载依赖关系)

    1.本地资源加载 1).建立Editor文件夹 2).建立StreamingAssets文件夹和其Windows的子文件夹 将下方第一个脚本放入Editor 里面 脚本一  资源打包AssetBund ...

  5. Unity AssetBundle笔记

    1.入门: Resources:表示U3D自动将资源打成一个AssetBundle包,所有放在Resources下的文件夹都会打成一个AssetBundle包,资源非常大,Resources文件夹在真 ...

  6. Unity AssetBundle爬坑手记

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

  7. (转)Unity AssetBundle爬坑手记

    转自:http://www.cnblogs.com/ybgame/p/3973177.html 这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对Asset ...

  8. AssetBundle系列——资源的加载、简易的资源管理器

    每个需要进行资源管理的类都继承自IAssetManager,该类维护它所使用到的所有资源的一个资源列表.并且每个资源管理类可以重写其资源引用接口和解引用接口. 每个管理器有自己的管理策略,比如Scen ...

  9. 【Unity3D技术文档翻译】第1.9篇 使用 Unity AssetBundle Browser tool (AssetBundle系列完结)

    上一章:[Unity3D技术文档翻译]第1.8篇 AssetBundles 问题及解决方法 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced D ...

随机推荐

  1. Lua 垃圾收集机制

    1. 问题:一款用Lua做的游戏,玩了一段时间后会变卡 因为知道lua是有自动管理内存的机制,所以之前一直没有关注过lua内存的问题.所以今天好好的查看了lua垃圾收集机制.看了一下Lua的Garba ...

  2. Sanatorium

    Sanatorium time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  3. 设计模式-中介者模式(Mediator)

    /***中介者模式在消息队列中的应用*/package test.mediator; public abstract class Message { private Messages messages ...

  4. loadrunner基本概念、安装及术语(一)

    一.初识loadrunner: LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架 ...

  5. acm课程练习2--1001

    题目描述 Now,given the equation 8x^4 + 7x^3 + 2x^2 + 3x + 6 == Y,can you find its solution between 0 and ...

  6. action参数绑定

    thinkPHP支持操作方法的参数绑定功能 action参数通过直接绑定URL中的变量作为操作方法的参数,可以简化方法的定义甚至路由的简析. 原理是把URL的中参数(不包括模块,控制器和操作名)和控制 ...

  7. Git学习 -- 标签管理

    新建标签 git tag <tagname>   默认为HEAD,也可以指定一个commit id eg.   git tag v0.9  git tag v1.0 31aa59c git ...

  8. LINUX中磁盘挂载与卸除

    一.挂载格式与参数说明: 要将文件系统挂载到我们的 Linux 系统上,就要使用 mount 这个命令啦! 不过,这个命令真的是博大精深-粉难啦!我们学简单一点啊- ^_^ [root@www ~]# ...

  9. dfs+dp思想的结合------hdu1078

    首先是题目的意思: 从一个正方形的0,0点开始走,只能横着走,竖着走,最多走k步,下一个点的数一定要比当前这个点的值大,每走一步,就加上下一个点的数据,问数据最大能有多少. 首先遇到这种题目,走来走去 ...

  10. SVN分支的创建,合并,与销毁和相关操作

    test是分支和主干所在的文件夹,SVNTest是主干,所有的分支都放在branch里面,192.168.1.101是服务器的地址 创建分支: 把服务器中的主干复制出来到自己的分支上: svn cop ...