[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 ...
随机推荐
- String.Format(string, arg0)中sring格式
复合格式字符串和对象列表将用作支持复合格式设置功能的方法的参数.复合格式字符串由零个或多个固定文本段与一个或多个格式项混和组成.固定文本是所选择的任何字符串,并且每个格式项对应于列表中的一个对象或装箱 ...
- sh语法入门学习
玩linux都知道sh脚本的方便,但如何编写sh脚本却是像我这样的新手和菜鸟的难题.能不能编写得出来是一回事,了不了解又是另一回事.抱着好好学习,天天向上的精神,大家有空就看看吧,没有坏处的.下面来抄 ...
- OpenGL—Android 开机动画源码分析二
引自http://blog.csdn.net/luoshengyang/article/details/7691321/ BootAnimation类的成员函数的实现比较长,我们分段来阅读: 第三个开 ...
- php 图片压缩处理
<?php require dirname(__FILE__).'/../includes/common.inc.php'; $_clean = array(); $_info = array( ...
- ubuntu下安装多个jdk的切换命令update-alternatives
update-alternatives 以前叫alternatives 下面的介绍,直接引用了,其中必须安装了才会在候选里面出现. usage: update-alternatives --inst ...
- python 中调用shell命令
subprocess模块 根据Python官方文档说明,subprocess模块用于取代上面这些模块.有一个用Python实现的并行ssh工具—mssh,代码很简短,不过很有意思,它在线程中调用sub ...
- SlidingMenu的使用,结合Fragment(eclipse环境)
首先下载SlidingMenu,有Library和Sample,然后在自己的项目中引入类库(引入智慧北京工作空间的Library),然后V4包会发生冲突,删掉自己项目Libs目录下的V4包即可 侧滑布 ...
- cordova 启动界面config.xml配置
<preference name="SplashScreen" value="screen"/> <preference name=" ...
- 设计模式---Manager(管理器)
设计模式之美:Manager(管理器) 索引 意图 结构 参与者 适用性 效果 实现 实现方式(一):Manager 模式的示例实现. 意图 将对一个类的所有对象的管理封装到一个单独的管理器类中. 这 ...
- C#排列组合类
//----------------------------------------------------------------------------- // // 算法:排列组合类 // // ...