IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> AB打包策略 -> 正文阅读

[游戏开发]AB打包策略

AB分配策略:

确定如何将项目的资产划分为AssetBundles并不容易。关键决策是如何将对象分组到AssetBundles中。以下是unity手册提供的主要策略是:

1. 逻辑实体分组(Logical Entity Grouping)

例子

  • 捆绑用户界面屏幕的所有纹理和布局数据
  • 捆绑一个角色/一组角色的所有模型和动画
  • 捆绑跨多个级别共享的场景片段的纹理和模型
最常用的策略:按功能出现需要的资源,将需要的资源捆绑到一个ab里,这样,加载该功能界面的时候,只要加载该ab就可以,
如果功能比较复杂,可以视情况拆分粒度 逻辑实体分组是可下载内容(DLC)的理想选择,因为通过这种方式将所有内容分开,您可以更改单个实体,而无需下载其他不变的资产。
使用前提:开发人员必须精确地了解项目将在何时何地使用每种资产。

2. 类型分组(Type Grouping)

例子

  • 预制
  • 音频
  • 热更脚本
类型分组是构建供多个平台使用的AssetBundle的较好策略之一。

3. 并发内容分组(Concurrent Content Grouping)

例子

  • 每个关卡都包含完全独特的角色,纹理,音乐等
  • 基于场景的包,每个场景束应包含大部分或所有场景依赖关系。
这些资产将同时加载和使用。

最后,无论您采用哪种策略,以下都是一些可以全面记住的其他提示:

  • 将经常更新的对象与很少更改的对象分离
  • 把需要同时加载的Asset尽量打包到同一个AB里。例如模型,其纹理和动画。
  • 如果一次经常加载少于50%的捆绑包,请考虑将其拆分
  • 如果您发现多个AssetBundle中的多个对象都依赖于完全不同的AssetBundle中的单个资产,请将依赖关系移至单独的AssetBundle
  • 根据依赖树进行的最优打包策略,公共资源单独打ab,独立资源打到一起。
  • 如果不太可能同时加载两组对象(例如标准和高清资产),请确保它们位于自己的AssetBundle中。
  • 考虑合并较小(少于5到10个资产)但经常同时加载其内容的AssetBundle
  • 如果一组对象只是同一对象的不同版本,请考虑使用AssetBundle Variants
  • 通常情况下,1M左右的AssetBundle包加载性能最好,冗余也可以接受,但是在Unity 5.3版本之后,对于AB文件的文件大小其实不必再限定于1MB之内。使用LZ4压缩,基于其Chunk的加载特点,AB加载很快,且内存占用要比之前小很多。所以LZ4的AB其实可以考虑更加粒度一些。
  • shader字体等其他细碎并且需要常驻内存的资源打包到一起,启动游戏的时候常驻内存。
  • 根据项目实际需求将需要经常热更新的资源进行单独打包。

AssetBundle Variants

AssetBundle Variants是Unity5的新特性。你可以将两组不同的资源指定为同一个AssetBundle但是指定不同的Variants,这样,你可以根据平台的不同加载不同的资源(例如支持高清资源的设备加载hd的Variants,不支持高清资源的设备加载sd的Variants)。可是使用AssetImporter.assetBundleVariant设置Variants。

生成AB后会获得 2 * (n + 1) 个文件, 分别是

  1. 对应资源的 AssetBundlName, AssetBundleName.manifest : 这是资源的集合, 实际运行时需要加载的(不需要对应manifest),所以要记录manifest的信息,然后拷贝ab不拷贝manifest
  2. AssetBundle文件所在文件夹名字, AssetBundle文件所在文件夹名字.manifest : 资源依赖信息
  3. 主bundle保存了所有的manifest(主要是各个bundle的依赖关系)
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:50:05  更:2021-12-24 18:50:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:27:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码