首页 > [小明爬坑系列]AssetBundle原理介绍

[小明爬坑系列]AssetBundle原理介绍

一.简介

  Assetbundle 是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法使用起来很便利。

二.移动平台特点

  Assetbundle是可以把预制,文件以及场景都打包到Assetbundle中去的,但是在移动平台上,有诸多限制.

  首先,移动平台上虽然能打包场景,但是因为移动平台是不更新脚本的,所以即使是更新了,新增加的脚本也不会执行.如果需要做热更新,会有其他的办法.

  第二,因为移动平台上不能通过这种方式直接更新脚本,所以在对脚本进行大更新的时候,需要将更新脚本的大更新放应用市场,小版本更新用Assetbundle.

  第三,在对不同的平台进行打包的时候,需要设定打包目标平台,即参数:BuildTarget,打完包之后的数据不同平台之间不能通用.

三.打包数据的存储

  因为打包后一般先将数据暂时放置在StreamingAssets下,但是不同平台下StreamingAssets的路径是不同的,是十分需要注意的,在面对不同平台的时候,加载的路径是要不同的.在移动平台中,,因为StreamingAssets是只读的,所以在项目中,要将数据放到沙盒文件夹下.操作步骤如下:

1.打包出来的Assetbundle我们自己用LZMA压缩,上传到服务器上。

2.IOS或者Android下载这些assetbundle

3.解压缩这些assetbundle并且保存在Application.persistentDataPath 目录下。

4.以后通过AssetBundle.CreatFromFile  读取assetbundle。

四.总结

  对游戏中所有资源进行打包,比如按类型分为五个大部分  界面,模型,特效,声音,场景,脚本。

  1.界面部分:

  公用资源包(可复用的资源包)和 每个界面独有得资源包(不可复用的资源包)统一使用Prefab 打包成.assetbundle 二进制格式。

  2.模型部分:

  按角色分类,统一使用Prefab 打包成.assetbundle 二进制格式。 模型部分包括模型文件与动画文件,每一个模型文件对应一组动画文件。(如果模型需要换装还需提供对应换装的模型与贴图) ,因为unity4的重定向动画不支持动态加载,所以目前不需要考虑 不同大小 不同规格 不同性别 的模型重定向动画。

  3.特效部分: 统一使用Prefab 打包成.assetbundle 二进制格式。 

  4.声音部分: 统一使用Prefab 打包成.assetbundle 二进制格式。 

  5.场景部分:场景和前面的有点区别,场景需要导出烘培的光信息并且只能烘培场景之上永远不动的模型,但是这些永远不动的模型有可能会同时在多个场景中使用,所以场景烘培完毕后要把重复使用的对象删除,(运行游戏在动态的加载进来)场景中只保留该场景中永远不会变的模型,以及烘培的光照信息。 打包场景后会生成.unity3D 二进制格式,它和 assetbundle 打包方式是不同的。(另外,也可以考虑 json xml 二进制 来动态组装场景)。  

  6.脚本部分:如果Prefab上是带脚本打包Assetbundle的话  脚本是不会被运行的(移动平台), 但是unity有一个技巧,Prefab上的脚本 如果本地有的话它会把本地的同名脚本绑定在Prefab对象上,它会很好的执行。 

  7.Prefab打包技巧: Prefab打包时自身是不占多少空间的 <=1KB  但是Prefab上是可以关联  这五大部分 “界面,模型,特效,声音,场景,脚本”以及在Hierarchy视图中 坐标/缩放/旋转。 关联这些信息以后就会很大,所以为了避免资源的浪费尽量避免Prefab重复关联。

  一个prefab下面可以同时关联多个游戏对象 ,这里举个例子如果你的 Prefab下面放了一个模型 它的大小可能是500k  ,在 Prefab下面放了十个完全相同模型 它的大小可能是501k 。 如果Prefab下面放了两个不同的模型,它的大小可能就会是 500k x 2 的size  ,也就是说Prefab与关联的数量是无关的 。 

  8.加密部分: assetbundle 是可以转换成 字节数组 ,客户端与服务器约定一组解密 字节数组的算法就可以实现资源加密。

转载于:https://www.cnblogs.com/WongSiuming/p/5082638.html

更多相关:

  • 一.xgboost前奏1,介绍一下啥是xgboostXGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法。它由陈天奇所设计,致力于让提升树突破自身的计算极限,以实现运算快速,性能优秀的工程目标。2,XGBoost的三大构件XGBoost本身的核心是基于梯度提升树实现的集成算法,整体来说可以有三...

  • ​这是3D 点云的深度学习框架,提供常见的点云分析方法的一种通用深度学习模型。它主要依赖Pytorch Geometric和Facebook Hydra。该框架能够以最小的代价和极大的可重复性来构建精简而复杂的模型。目标是建立一个工具,用于对SOTA模型进行基准测试,同时允许研究者们有效地研究点云分析,最终目标是建立可应用于实际应用的...

  • 【从零开始的ROS四轴机械臂控制(三)】五、在gazebo中添加摄像头1.修改arm1.gazebo.xacro文件2.修改arm1.urdf.xacro文件3.查看摄像头图像六、为模型添加夹爪(Gripper)1.通过solidworks建立模型2.将夹爪添加进gazebo(1)模型导入(2)更改urdf文件夹3.gazebo模型抖...

  • 使用Keras训练自动驾驶(使用Udacity自动驾驶模拟器) 1.完成项目所需要的资源 (1)模拟器下载 • Linux • macOS • Windows (2)Unity 下载 运行Udacity模拟器需要Unity,这是下载链接。 https://unity.cn/releases (3)Behavioral Cl...

  • maxtree–工厂模型第74卷 大小解压后:2.34G 信息: 植物模型第74卷是高质量的三维植物模型的集合。包括12个物种,共72个单一模式。 获取地址:三维植物树木模型 Maxtree – Plant Models Vol 74-云桥网 种类 三角枫 槭树 复叶槭 鸡爪槭 白桦 Chitalpa tashkente...

  • Windows平台下程序打包流程 1、所有测试完成之后、程序release编译完成 2、依赖库打包 执行deploy.bat 脚本打包最新的程序以及依赖库 3、可执行程序打包 打开打包工程文件.evb, 使用 enigma virtual Box 打包可执行程序 点击“执行封包”,开始打包 打包完生成可执行文件: 打包安...

  • 一、下载 pip install Pyinstaller   二、使用Pyinstaller 1、使用下载安装的方式安装的Pyinstaller打包方式 将需要打包的文件放在解压得到的Pyinstaller文件夹中,打开cmd窗口,把路径切换到当前路径打开命令提示行,输入以下内容(最后的是文件名): python pyinstal...