AB包创建,资源打包
AB包加载,加载使用
AB包依赖关系
AB打包和使用的设计
AB打包工具的编写
AB资源加载和管理
AB打包步骤:
-
打标记
-
后缀名是assetbundle (场景打包后缀是U3d)
-
打包的脚本必须放到Editor文件夹下,不需要继承MonoBehavior
-
什么是AssetBundle?
(1) 在unity编辑器里面一些文件。可以运行环境中动态加载。
(2) 包括:
① Prefab
② 材质
③ 贴图
④ 场景
(3) 就是把一些资源文件和场景文件以某种加密方式,(LZMA算法),保存的一个文件。
(4) 可以保存在本地,在客户端运行的时候就可以加载AssetBundle(也可以保存到远程服务器)
(5) 涉及到更新
① 打包AssetBundle
② 上传服务器
③ 客户端运行的时候,检查一下版本,如果不一样
- 每个客户端MD5和服务器进行比较,哪个不一样就去服务器下载最新的包。
- SVN:每一个版本都有一个版本号,检查一下版本号,如果不一样就去服务器。下载最新的包,替换本地的包。
(6) Http协议:发送一次就请求一次
(7) Socket 时时通讯
2.Resources的区别
(1) 其实差别不大,Resources把目录下的东西全都自己打包。
(2) Resources.Load 加载资源
(3) 游戏一旦发布,里面的内容都包裹在项目里面,就不能修改不能更新。
3.AssetBundle的依赖关系:
(1) 有一个模型,上面有材质,就可以说模型依赖材质
(2) 在加载资源的时候,要先加载依赖关系,再加载自身。
(3) 在卸载资源的时候,先卸载自身,再卸载依赖关系。
mainfest 文件介绍:crc 为校验码 通过这个码检查是否完整Assets 为包里包含了哪些资源文件Dependencies 为包的依赖AssetBundleMainfest anm = new AssetBundleMainfest();anm.GetAllDependencies();anm.GetAllAssetBundles();在加载资源的时候,要先加载依赖关系,再加载自身。在卸载资源的时候,先卸载自身,然后再看自身所依赖的AssetBundle还有没有以来的AssetBundle,如果没有就不能卸载,有就可以卸载。
管理所有场景的类 -> 所有包的管理 场景内 -> 包所依赖关系 -> 包的加载 WWW -> 包里的资源加载 AssetBundle.Load