【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事
一、简介
马三在公司大部分时间做的都是游戏业务逻辑和编辑器工具等相关工作,因此对Unity AssetBundle这块的知识点并不是很熟悉,自己也是有打算想了解并熟悉一下AssetBundle,掌握一下Unity资源管理方面的知识,因此有了这篇博客。
我会在博客中整理出一些自己学习时收集到的一些比较好的AssetBundle学习资料,并且结合现在正在参与开发的商业项目随时写下一些自己的拙见。本篇博客权当是马三自己的笔记和一些杂谈,会不断地随时随地的更新一些内容。
二、收集整理的一些AssetBundle资料
1.Unity AssetBundle5讲系列
Unity5-ABSystem(一):AssetBundle原理
Unity5-ABSystem(二):AssetBundle导出
Unity5-ABSystem(三):AssetBundle加载
Unity5-ABSystem(四):AssetBundle依赖
Unity5-ABSystem(五):AssetBundle内存
2.慕容小匹夫系列
Unity3D 5.3 新版AssetBundle使用方案及策略
3.何三思译Unity AssetBundle官方文档系列
【Unity3D技术文档翻译】第1.0篇 AssetBundles
【Unity3D技术文档翻译】第1.1篇 AssetBundle 工作流
【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产
【Unity3D技术文档翻译】第1.3篇 创建 AssetBundles
【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系
【Unity3D技术文档翻译】第1.5篇 本地使用 AssetBundles
【Unity3D技术文档翻译】第1.6篇 使用 AssetBundle Manager
【Unity3D技术文档翻译】第1.7篇 AssetBundles 补丁更新
【Unity3D技术文档翻译】第1.8篇 AssetBundles 问题及解决方法
【Unity3D技术文档翻译】第1.9篇 使用 Unity AssetBundle Browser tool (AssetBundle系列完结)
4.Unity AssetBundle官方文档
A guide to AssetBundles and Resources
5.Unity Assetbundles官方说明系列
Unity5.4 Assetbundles官方说明一(AssetBundles打包详解)
Unity5.4 Assetbundles官方说明二(AssetBundle压缩与解压)
Unity5.4 Assetbundles官方说明三(AssetBundle资源包的内部结构)
Unity5.4 Assetbundles官方说明四(AssetBundles的下载和加载)
Unity5.4 Assetbundles官方说明五(从AssetBundles的加载和卸载资源对象)
Unity5.4 Assetbundles官方说明六(保留下载的AssetBundle)
Unity5.4 Assetbundles官方说明七(在AssetBundle中存储和加载二进制数据)
Unity5.4 Assetbundles官方说明八(数据安全方面的处理)
Unity5.4 Assetbundles官方说明九(资源包中包含脚本文件)
Unity5.4 Assetbundles官方说明十(官方疑难问题解答)
Unity5.4 Assetbundles十一:遇到的坑和整理的打包和加载流程(资源包更新的简易框架)
6.杂
Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解
Unity3D中实现按资源名称自动化命名打包AssetBundle
Unity AssetBundle加载音频,无法播放音效并报错的坑
三、AssetBundle踩坑与经验集锦
1、先说一个遇到的坑,当大量(几百个)AssetBundle加载的时候(可能是WWW加载的时候,也可能是AssetBundle.LoadAsset的时候),Android手机上会闪退。看崩溃log是多线程文件访问的时候崩溃了。解决方法是减少同时加载的AB数量(这个是纯逻辑控制),使用AssetBundle.LoadFromFile接口。
2、打包AssetBundle使用LZ4压缩(BuildPipeline.BuildAssetBundles,第二个参数传递BuildAssetBundleOptions.ChunkBasedCompression),默认是LZMA压缩的,具有最高的压缩比。而替换为LZ4压缩,压缩比没有LZMA高,但是加载速度大幅提高。加载AssetBundle使用AssetBundle.LoadFromFile(Async),在Unity4的时候,只能使用WWW的接口来加载AB,因为CreateFromFile不支持压缩的AB。而Unity5的LoadFromFile是支持任意压缩格式的AB的。所以没有太大必要使用WWW了,而且这个接口像WWW.LoadFromCacheOrDownload接口一样,加载不压缩或者LZ4压缩格式的AB的时候是不会有额外的内存开销的。具体关于内存、加载速度的细节可以参考上面第三篇文章里面的介绍。
3、资源规划好一个独立的资源工程。规划好一系列的文件夹,在导入相应资源的时候自动通过AssetImporter设置好AB的名字。监测资源导入可以用AssetPostprocessor 。带动画的模型需要创建好prefab,而不带动画只是用于换装的模型可以直接导出,不需要创建prefab,因为这些模型我们只是取它的mesh数据。如果有打包图集,需要注意它和AB的匹配关系,举例来说,如果三张图片指定了同一个图集,而又分别指定了不同的AB名,则三个AB里面都包含了此图集(三张图片),这样就会造成严重的资源浪费。
4、AssetBundle.LoadFromFile接口在Android平台下也是可以直接访问StreamingAssets文件夹里面的内容的。5.4版本可以直接使用Application.streamingAssetsPath。而之前的版本需要使用 Application.dataPath + "!assets/" + filePath; 因为streamingAssetsPath带了jar://,这个是给WWW用的URL路径,而LoadFromFile接口需要的是实际路径(不带jar://也不带file://)。注意 !assets/ 这个地方叹号后面没有/。网上搜索到的各种写法都有,只有这个是正确的,注意此处细节。
四、项目工程地址
五、未完待续
【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事的更多相关文章
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二)
本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一) 上个帖子主要是讲了如何读取Excel,本帖主要是讲述读取的Excel数据是如何序列化成二进制的,考虑到现在在手游中 ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新
本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (三)
本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二) 前几天有点事情所以没有继续更新,今天我们接着说.上个帖子中我们看到已经把Excel数据生成了.bin的文件,不过其 ...
- 2017年Unity游戏开发视频教程(入门到精通)
本文是我发布的一个Unity游戏开发的学习目录,以后我会持续发布一系列的游戏开发教程,都会更新在这个页面上,适合人群有下面的几种: 想要做独立游戏的人 想要找游戏开发相关工作的人 对游戏开发感兴趣的人 ...
- 【Unity游戏开发】浅谈Lua和C#中的闭包
一.前言 目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#.通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑.这样既能在保持一定的游戏运行效率的同 ...
- 【Unity游戏开发】记一次解决 LuaFunction has been disposed 的bug的过程
一.引子 RT,本篇博客记录的是马三的一次解决 LuaFunction has been disposed 的bug的全过程,事情还要从马三的自研框架 ColaFrameWork 说起.最近,马三在业 ...
- 【Unity游戏开发】用C#和Lua实现Unity中的事件分发机制EventDispatcher
一.简介 最近马三换了一家大公司工作,公司制度规范了一些,因此平时的业余时间多了不少.但是人却懒了下来,最近这一个月都没怎么研究新技术,博客写得也是拖拖拉拉,周六周天就躺尸在家看帖子.看小说,要么就是 ...
- 【Unity游戏开发】不接SDK也能在游戏内拉起加QQ群操作?
一.引子 一般在游戏进行对外测试的时候都会有一个玩家QQ群,方便玩家反馈问题.交流游戏心得等.那么为了增加玩家加QQ群的欲望,可能会在游戏里面设计一个小功能,点击一下可以直接拉起手Q加群的操作,加了Q ...
- 关于Unity游戏开发方向找工作方面的一些个人看法
这是个老生常谈,却又是谁绕不过去的话题,而对于每个人来说,所遇到的情况又不尽相同,别人的求职方式和路线不一定适合你,即使是背景很相似的两个人,有时候机遇也很重要. 我本人的工作经验只有一年,就业方式 ...
- Re:Unity游戏开发有哪些让你拍案叫绝的技巧?
这是我在知乎一个问题: <Unity游戏开发有哪些让你拍案叫绝的技巧?> 下面的回答,觉得蛮有趣的,贴在这里和博客的朋友们分享下. ----- 分享一个比较好玩的内容吧. 大家都知道Uni ...
随机推荐
- Java 必看的 Spring 知识汇总!有比这更全的算我输!
往 期 精 彩 推 荐 [1]Java Web技术经验总结 [2]15个顶级Java多线程面试题及答案,快来看看吧 [3]面试官最喜欢问的十道java面试题 [4]从零讲JAVA ,给你一条清晰 ...
- N-Queens(N皇后问题)
题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two que ...
- jBPM4工作流应用开发指南
首先十分感谢作者给我这个机会在他的作品即将问世之前做一些感想,也正好让我能在忙碌中抽空回顾一下这么多年在技术平台方面走过的路以及在Workflow方面的点点滴滴.因为本书是介绍jBPM的专业书籍,所以 ...
- Web开发相关工具收集
FireFox相关: FireBug/GreaseMonkey/Yslow/WebDeveloperSelenium:Web应用程序测试的工具-- http://seleniumhq.org/ h ...
- Android 源码中的设计模式
最近看了一些android的源码,发现设计模式无处不在啊!感觉有点乱,于是决定要把设计模式好好梳理一下,于是有了这篇文章. 面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因.如果一个类有多于 ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第三周编程作业
一. 逻辑回归 1.背景:使用逻辑回归预测学生是否会被大学录取. 2.首先对数据进行可视化,代码如下: pos = find(y==); %找到通过学生的序号向量 neg = find(y==); % ...
- 基于Cloudera Search设计数据灾备方案
当实际项目上线到生产环境中,难以避免一些意外情况,如数据丢失.服务器停机等.对于系统的搜索服务来说,当遇到停机的情况意味着在停机这段时间内,用户都不能通过搜索的相关功能进行访问数据,停机意味着将这一段 ...
- cocos2d-x学习之路之工作吐槽
经过大半年的cocos2d-x的学习,目前已在一个游戏创业公司实习,负责客户端的代码编写和维护.公司做了一款网游.比较给力,马上就要发布了.希望能够大卖.比较坑的是,居然电脑不给联网.查资料都不好查, ...
- session熟知
Session 服务器端保存会话信息的技术. //如何获得session HttpSession session = request.getSession(); //如何操作session sessi ...
- CSS层叠和继承
CSS具有两个核心的概念--继承和层叠.一般文本类的属性会被继承,即某个元素的CSS属性会传递给内部嵌套的元素.一个元素可能有一个或者多个样式的来源,当属性发生冲突时,就会根据加载顺序和权重大小决定层 ...