十分钟搞清楚热更是个啥(Unity AssetBundle)
2020-06-29 04:45
856 查看
阅前提示
该文章不涉及具体热更实现,只从本质上了解热更。
具体实现网络中已经存在许多了所有本篇文章无涉及。
适合人群:对AssetBundle有一定了解,对热更不太了解的童鞋
阅读方式:浏览
文章目录
热更是什么
区别于普通的更新,需要下载整个软件包体并安装。热更新只针对变化资源进行在线下载,也无需重新安装。尤其是修复bug或者频繁的补丁更新,普通的更新方式耗时耗力。
热更条件
可以被网络传输的资源 + 可以存放资源的路径 即
AssetBundle + Application.persistentDataPath
热更准备
这取决于资源比较时的方式,生成好对应的比较文件即可,重点在于让**“我”**知道哪些文件变了需要去服务器上下载了。
检测热更
约定好热更规则即可(通过版本号控制or其他whatever)
热更过程
核心是本地资源与线上资源的比较,锁定差异文件,从而进行线上资源的下载替换。
这里主要涉及的功能块是 资源比较
其中一种比较策略
以AB包为单位,生成每个AB包的MD5码,作为比较依据。
热更结束
常使用的API
1.用于返回assetObject相对于工程目录的存储路径
AssetDatabase.GetAssetPath(obj);
2.设置AB名(可以手动操作)
AssetImporter ai.assetBundleName
3.生成AB包
BuildPipeline.BuildAssetBundles (path,BuildAssetBundleOptions,BuildTarget);
4.加载AB包及AB资源
AssetBundle.LoadFromFile(paht); AssetBundle.AssetBundle.LoadFromMemory(byte); //适用于加密 AssetBundle.LoadAsset(assetName) AssetBundle.LoadAllAssets() 加载AB包中所有的对象,不包含依赖的包 AssetBundle.LoadAssetAsync() 异步加载,加载较大资源的时候 AssetBundle.LoadAllAssetsAsync() 异步加载全部资源 AssetBundle.LoadAssetWithSubAssets 加载资源及其子资源
5.卸载AB
AssetBundle.Unload(true) 卸载所有资源,包含其中正被使用的资源 AssetBundle.Unload(false) 卸载所有没被使用的资源 Resources.UnloadUnusedAssets 卸载个别未使用的资源
相关文章推荐
- Unity 热更新之AssetBundle
- Unity 4.x Asset Bundle 重名
- Unity之AssetBundle原理全解
- 你应该知道的AssetBundle管理机制(内存管理较适合于Unity 5.3之前的版本)
- Unity资源打包之Assetbundle
- Unity AssetBundle爬坑手记
- unity5.0资源打包AssetBundle
- Unity中Shader和AssetBundle结合使用的注意事项
- 用面向对象思想,管住Unity调皮的AssetBundle
- Unity Assetbundle的实战
- unity之Asset Bundle资源打包加载
- Unity游戏开发使用Assetbundle加载场景实战
- Unity调用AssetBundle资源
- Unity 游戏框架搭建 (十二) 简易AssetBundle打包工具(二)
- Unity AssetBundle爬坑手记
- Unity 5 官方打包管理工具 Asset Bundle Manager
- Unity AssetBundle的生成、加载和热更新
- Unity AssetBundle打包
- 实力封装:Unity打包AssetBundle(番外篇)
- 详细的介绍Unity5的AssetBundle