什么是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. cin详解(cin.get()、cin.getline()、cin.clear()、cin.sync())

    在C中,输入输出用scanf和printf,在输入数据的同时还需说明数据的类型,如果输入数据较多,那就很麻烦,而C++中也有相似的东西cin和cout,它们来自C++的一个名叫" iostr ...

  2. Coupons and Discounts

    Coupons and Discounts time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. tab奇偶行颜色交替+插件

    (function($){ $.fn.tableUI=function(options){ var defaults={ evenRowclass:"evenRow", oddro ...

  4. 使用VS2013编译webkit

    环境: win7_x64.VS2013 开始: 一.下载webkit 从网站"https://github.com/WebKit/webkit"下载webkit,我下载的版本最后的 ...

  5. linux 下载安装tomcat

    1.下载tomcat 2.tar -zxvf apache-tomcat-7.0.67.tar.gz 3.cd bin目录  启动  ./startup.sh [root@fuyuanming bin ...

  6. Android手机图片适配问题

    需求:今天在做ListView的时候遇到一个问题,就是ListView中加载图片的时候.有些图片的大小比较大,所以会出现图片显示不充分的问题. 首先,再不做任何处理的情况下,大小是这样的.宽度是Wra ...

  7. oracle xe client 如何设置 tnsnames.ora(解决无法使用pl/sql developer的问题)

    10.2版本xe的服务器和客户端安装都很方便,由于xe的服务器只允许建立一个实例,实例名字会直接默认为xe,客户端默认安装在C:\XEClient目录下,使用sqlplus连接服务器: sqlplus ...

  8. ZooKeeper应用理论及其应用场景

    ZooKeeper Client APIZooKeeper Client Library提供了丰富直观的API供用户程序使用,下面是一些常用的API: ● create(path, data, fla ...

  9. android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明

    android应用程序,由一到多个Activity组成.每个Activity没有很紧密的联系,因为我们可以在自己的程序中调用其它Activity,特别是调用自己的代码之外生成的Activity,比如a ...

  10. Apache无法启动提示the requested operation has failed

    主要参考这篇 http://apps.hi.baidu.com/share/detail/15868128 但还是遇到一些问题,记录如下: 1. 配置完成后,restart apache,出现 the ...