首页 > 编程知识 正文

unityab包插件,unity怎么下载标准资源包

时间:2023-05-06 04:19:15 阅读:159471 作者:1258

一、初识的AB套餐AssetBundle是一种针对Unity提供的存储资源的压缩格式打包资源集合,通过资源管理扩展,可以动态加载或卸载,大大节省了游戏占用空间,即使是已经发行的游戏因此,动态更新、网络游戏、资源下载等都是基于AssetBudle系统的。

二.具体开发步骤3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/http://www.Sina.com

三.打包AB包

由于只有Assets面板下的资源文件打包在AB包中,因此一些模型资源首先被创建为PrefAB预制单元,而Inspector面板底部提供了用于创建AssetBundle的工具。 可以使用菜单选项“New”创建空的ab包。 之后,可以进行BuildAssetBundles。 这意味着在创建后必须将其导出。 这个过程需要编写代码实现。

四. AB包下载

两种下载方式

高速缓存机制和非高速缓存机制

以非缓存方式下载的资源文件不会写入Unity引擎的缓存区域,而在缓存机制下下载的资源文件会写入Unity引擎的缓存区域。

创建AssetBundle,开发者在Unity编辑器中通过脚本来将所需的资源打包成AssetBundle文件。以这种方式下载的AssetBundle文件不会保存在缓存中。

上传至服务器。开发者创建好AssetBundle文件后,可通过上传工具将其上传到游戏的服务器中,使游戏客户端可以通过访问服务器来获取当前所需的资源,进而实现游戏的更新。通过缓存机制下载的AssetBundle存储在Unity的本地缓存中。 下载前,系统会搜索缓存目录中的资源,只有在缓存目录中不存在下载的数据或版本较低时,才会用新的数据资源替换缓存中的原始数据。

五.加载和卸载AsserBundle

AssetBundle下载完成后,无法直接使用。 必须将AssetBundle加载到内存中,以创建特定的文件对象。 此过程是AssetBundle的加载,需要开发人员编写代码实现,无论是在下载还是加载过程中,AssetBundle都会消耗内存。

下载AssetBundle。游戏进行时,客户端会将服务器上的游戏更新所需的AssetBundle下载到本地设备中,再通过加载模块将资源加载到游戏中。Unity提供了相应的API可供使用来完成从服务端下载AssetBundle。

将AB包下载到本地客户端时,会将硬盘或网络文件读取到内存区域。 这是AB包的内存镜像数据块,必须将AB包的内容加载到内存中,并实例化AB包文件中的对象。 Unity提供了三种从下载的数据中加载AB包的不同方法。

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /具体用法和含义请读者自行查阅资料。

加载AssetBundle。AssetBundle 文件下载成功后,开发者通过Unity提供的API可以加载资源里所包含的模型、纹理图、音频、动画、场景等,并将其实例化来更新游戏客户端。

卸载AssetBundle。在Unity中提供了相应的方法来卸载AssetBundle,卸载AssetBundle可以节约内存资源,并且保证资源的正常更新。

它使用布尔值参数指定Unity是否卸载包含加载的资源对象的所有数据,或者只是卸载下载的压缩资源数据。

1、如果是assetbundle.unload(false )

false是释放AB软件包文件的内存镜像,不包括用Load创建的Asset内存对象。

2、如果是assetbundle.unload(true )

true表示释放AB包文件内存镜像,并销毁用Load创建的所有Asser内存对象。

Unity只能将特定的实例化AB包加载到APP应用程序中一次。 如果加载已加载但未卸载的AB包,Unity将报告错误。 因此,对于避免不再使用的AB包,或者卸载或下载,我们也将解释为什么一般需要卸载AB包。

六.管理依赖

Bundle中的资源可能依赖于其他资源,例如几个不同的模型使用地图。

如果共享的依赖关系包含在使用的每个对象中,则当这些对象被打包时,此部分共享的资源将

多次打包,这会造成内存的浪费。为了避免这种浪费,需要将共享的资源打包到一个单独的AB包,然后让两个模型所隶属的AB包分别依赖于该AB包。

通过这样的方法,该依赖资源仅被打包一次,从而起到节省游戏资源的效果。现在Unity会自动判断并处理所打包的资源之间的依赖,开发者仅需将所有资源一次性打包到指定的文件夹下,相关依赖的管理都有系统自动解决,不再需要手动处理。

七、存储和加载二进制文件

AB包可以把Unity3D中的文件或者资源导出为一种特定的文件格式(.Unity3d),导出的特定格式的文件能在需要的时候加载到场景中去。

如果想要保存以“.bytes”为扩展名的二进制数据文件,需要在Unity中将该文件保存为TestAsset文件,然后才能对AB包进行加载,在通过检索二进制文件数据来实现。

八、在资源中包含脚本

Unity中也可以把脚本打包成AB包,但要注意它与普通资源文件的处理方式不同,并且实际上也不会执行代码。如果你想在AB包中包含代码,就需要将脚本预编译并上传到网站中,摒弃引用Reflection类来实现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。