unity动态加载之AssetBundle应用

前言

unity通过Assetbundle技术来解决在游戏运行中,对资源进行动态的下载和加载,开发者将游戏中所需要的各类资源打包压缩上传至网络服务器上,在运行游戏时可以从服务器上下载资源,从而实现资源的动态加载。

AssetBundle是在unity中使用的一种用于存储资源的文件格式,它可以存储任意一种unity可以识别的资源,包括二进制文件,对于AssetBundle的研究,可以学习雨松的文章:AssetBundle原理AssetBundle实战。还有这篇:链接  本文作为学习总结。

创建AssetBundle

要将物体打包成AssetBundle格式的文件,这里有个技巧,将游戏中需要加载的游戏物体,如需要很多资源,可以将其制作成prefab,将prefab打包成AssetBundle文件,这样在下载后加载游戏物体就会方便很多,创建AssetBundle需要借助editor脚本,在Asset文件下创建一个Editor文件夹,创建脚本,继承Editor,添加引用using UnityEditor;

核心方法就是BuildPipeline.BuildAssetBundle,这里是对方法的解释:链接

方法的参数中对平台的选择要注意,不同平台的AssetBundle文件是不能混用的;

创建的AssetBundle文件最好放在StreamingAssets文件夹下,因为在移动平台下只能读取这个路径;

读取AssetBundle

1 文件放在本地还是放在服务器,读取方式完全一样

2 不同平台下StreamingAssets的路径是不同的。读取的路径有区别

3 读取的方法之一是 WWW.LoadFromCacheOrDownload 加载自缓存或下载,方法解释:链接

特点是根据版本号,现在本地搜索资源,如果已经下载,就读取本地的资源,如果本地没有该版本号的资源,就从服务器下载。对于之前下载的老版本的资源,unity会自动处理掉,不用担心造成资源下载过多的问题。

4 另一种读取方法就是AssetBundle.CreatFromFile ,按照雨松大大的说法,这个方法是同步的,且ios和android平台都已经支持了,对比上一个方法,这个方法效率更高,建议使用此方法。打包资源时选择不压缩,将资源自己压缩后放到服务器上,之后下载,解压,使用AssetBundle.CreatFromFile()读取,ok~

5 打包场景时优化:烘焙场景,将多个场景中复用的物体,即公用的物体,拿出来。单独打包,在加载场景时再将之前移出来的公用物体加进来。那么如何加进来了,可以通过编写个xml,或json记录公用物体在这个场景里的坐标,加载时对号入座,具体参考: Unity3D研究院之将场景导出XML或JSON或二进制并且解析还原场景(四十二)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值