Unity AssetBundle工作流
一、创建AssetBundle
1、在资源的Inspector视图下有一个AssetBundle的UI,第一个选项表示AssetBundle名称,第二个用于设置AssetBundle Variant,主要用于在不同版本资源的使用和动态替换AssetBundle。

2、在Unity的Assets文件夹下创建Editor文件夹,创建一个C#脚本,用于创建AssetBundle,代码如下:
using UnityEngine;
using UnityEditor; public class TestAssetBundles : MonoBehaviour { [MenuItem("Custom Editor/Build AssetBunldes")]
static void CreateAssetBundlesMain()
{
BuildPipeline.BuildAssetBundles("Assets/StreamingAssets", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
}
注:这里的MenuItem是用于在Unity编辑器的菜单上添加一个菜单项。输出路径为Assets下的StreamingAssets文件夹(确保存在)。
3、选择菜单栏中的Custom Editor->Build AssetBundles命令,即可在输出路径中看到打包的AssetBundle。

生成的AssetBundle:

这里的test.assetbundle即是要上传到服务器上下载的AssetBundle文件(如果有依赖关系,还要上传test.assetbundle.manifest文件)。
二、下载AssetBundle并加载
using System.Collections;
using UnityEngine; public class loadasset : MonoBehaviour { void Start () {
StartCoroutine("loadAssetBundle");
} IEnumerator loadAssetBundle()
{
string assetBundlePath = "file://" + Application.dataPath + "/StreamingAssets/test.assetbundle";
Debug.Log(assetBundlePath);
WWW www = WWW.LoadFromCacheOrDownload(assetBundlePath, );
yield return www;
if (www.error == null)
{
AssetBundle myLoadAssetBundle = www.assetBundle; AssetBundleRequest request = myLoadAssetBundle.LoadAssetAsync("park", typeof (GameObject));
yield return request; GameObject obj = request.asset as GameObject;
Instantiate(obj); myLoadAssetBundle.Unload(false);
} else
{
Debug.Log(www.error);
yield return null;
}
}
}
以上便是主要步骤。
Unity AssetBundle工作流的更多相关文章
- 【Unity3D技术文档翻译】第1.1篇 AssetBundle 工作流
译者前言:本章是关于从创建到加载,再到使用 AssetBundle 的整个流程的概述.阅读本章将对 AssetBundle 的工作流程有个简单而全面的了解. 本章原文所在章节:[Unity Manua ...
- 【Unity3D技术文档翻译】第1.9篇 使用 Unity AssetBundle Browser tool (AssetBundle系列完结)
上一章:[Unity3D技术文档翻译]第1.8篇 AssetBundles 问题及解决方法 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced D ...
- Unity AssetBundle
Unity AssetBundle爬坑手记 - 夜阑卧听风吹雨 时间 2014-09-15 16:55:00 博客园精华区原文 http://www.cnblogs.com/ybgame/p/39 ...
- Unity AssetBundle 踩坑记录
Unity AssetBundle 踩坑记录 editor 下选择什么平台的 ab 加载 Material doesn't have a color property '_Color' UnityEd ...
- Unity AssetBundle爬坑手记
这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷! AssetBundle是Unity推荐的 ...
- (转)Unity AssetBundle爬坑手记
转自:http://www.cnblogs.com/ybgame/p/3973177.html 这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对Asset ...
- [Unity AssetBundle]Asset资源处理
什么是AssetBundle 在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载.因此,Unity引擎引入了AssetBundle这一技术来 ...
- Unity AssetBundle 游戏资源分类及关系
--刚刚做完一个xlua的的热更项目,对AssetBundle资源分类总结一下.纯理论,闲谈知识,要是有建议,尽管提 ,不掺杂代码. --这里说说,AB是如何打包,如果下载,如何加载. 1.关键词理解 ...
- Unity资源打包学习笔记(二)、如何实现高效的unity AssetBundle热更新
转载请标明出处:http://www.cnblogs.com/zblade/ 0x01 目的 在实际的游戏开发中,对于游戏都需要进行打补丁的操作,毕竟,测试是有限的,而bug是无法预估的.那么在手游中 ...
随机推荐
- UVa 1625 - Color Length(线性DP + 滚动数组)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 利用python进行数据分析——(一)库的学习
总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn 一. Numpy: 标准安装的Python中用列表(list)保存一组值,可以用 ...
- selenium处理table表格
在UI自动化测试中经常会遇到表格的处理,下面是一点心得. 假设网页页面有一个表格,如何获取这个table的指定cell的值?你会说我们可以根据xpath定位到这个cell的行列,然后getText() ...
- 在WinCE上播放声音、设置透明图片、系统音量 C#
记录一下用到的C#在WinCE平台上的相关技巧备查 1.C#在WinCE上实现透明图片 1 2 3 4 5 6 7 8 9 using System.Drawing.Imaging; pu ...
- Entity Framework code first设置不在数据库中生成外键
你现在用的EF是什么版本?我用EF6,你可以重写SqlServerMigrationSqlGenerator的生成外键和更新外键的方法,把不需要的表都过滤掉不就ok了? public class Ex ...
- NopCommerce 3.4省市联动
做法有两种,一种是在StateProvince表里面加个字段,另一种是新建两个表,用来存市.县的数据,表结构完全按照StateProvince走就好了.我这里用的是第二种做法,菜鸟一枚,代码写的比较烂 ...
- SVN 操作报错 “Previous operation has not finished; run 'cleanup' if it was interrupted“
今天在 通过 SVN 合并代码的时候报了如下的错误 ”Previous operation has not finished; run 'cleanup' if it was interrupted“ ...
- SQLite 如何取出特定部分数据
如果我要取11-20的Students表的数据,则为: Select * From Students Limit 9 Offset 10; 表示从Students 表获取数据,跳过10行,取9行 ...
- Dubbo 改造普通单体项目
一.新建普通maven项目 1.首先,新建3个普通maven商城项目,模拟以往常见的Java单体应用开发,mall-interface是存放接口和公共代码部分,order-service-consum ...
- tornado用户指引(二)------------tornado协程实现原理和使用(一)
摘要:Tornado建议使用协程来实现异步调用.协程使用python的yield关键字来继续或者暂停执行,而不用编写大量的callback函数来实现.(在linux基于epoll的异步调用中,我们需要 ...