153 lines
5.1 KiB
Markdown
153 lines
5.1 KiB
Markdown
![]() |
热更的介绍
|
|||
|
|
|||
|
![[Pasted image 20240419104123.png]]
|
|||
|
|
|||
|
![[Pasted image 20240419104149.png]]
|
|||
|
|
|||
|
有两个单例Instance模式,一个是常规的类,一个是mono的类
|
|||
|
|
|||
|
![[Pasted image 20240419145634.png]]
|
|||
|
|
|||
|
![[Pasted image 20240419145700.png]]
|
|||
|
|
|||
|
这是存储预制体和场景,常量的Constr逻辑
|
|||
|
|
|||
|
![[Pasted image 20240419145716.png]]
|
|||
|
|
|||
|
生成crc校验码,这个crc表,直接复制copy就可以使用
|
|||
|
|
|||
|
![[Pasted image 20240419145821.png]]
|
|||
|
|
|||
|
继续,返回字符串校验码crc的,是GetCrc32对应的函数接口,调用对应的crc校验算法即可
|
|||
|
|
|||
|
![[Pasted image 20240419145848.png]]
|
|||
|
|
|||
|
一般是用ab包,完成资源热更,总的AB包配置创建逻辑,存储预制体路径的,是m_AllPrefabPath数据容器;
|
|||
|
还弄了一个FileDirABName的struct结构体,用来存储,其他类型数据的AB名称,和对应路径;
|
|||
|
|
|||
|
![[Pasted image 20240419150133.png]]
|
|||
|
|
|||
|
点击空白位置,就可以创建一个,新的ABConfig配置文件
|
|||
|
|
|||
|
![[Pasted image 20240419153952.png]]
|
|||
|
|
|||
|
已经创建好的,配置文件,还有指定的,各个需要打ab包的路径
|
|||
|
|
|||
|
![[Pasted image 20240419154042.png]]
|
|||
|
|
|||
|
AB包和MD5码,相关的逻辑结构,后续会写入到xml文件中,
|
|||
|
|
|||
|
![[Pasted image 20240419160907.png]]
|
|||
|
|
|||
|
这是项目本身的,文件路径汇总,之前是没有CreateAssetMenu创建入口,加上就好,分别是ab包,其中的文件列表md5、crc校验码相关的配置信息,对应的byte字节文件路径;
|
|||
|
还有xml、其余二进制文件、脚本、protobuf协议对应的路径;
|
|||
|
|
|||
|
![[Pasted image 20240419173520.png]]
|
|||
|
|
|||
|
对应属性面板的CustomEditor逻辑
|
|||
|
|
|||
|
![[Pasted image 20240419173840.png]]
|
|||
|
|
|||
|
最后还有一个GetRealFram函数接口,用来获取这个,项目配置文件
|
|||
|
|
|||
|
![[Pasted image 20240419173941.png]]
|
|||
|
|
|||
|
对应显示
|
|||
|
|
|||
|
![[Pasted image 20240419174027.png]]
|
|||
|
|
|||
|
xml文件,主要是配置相关的
|
|||
|
|
|||
|
![[Pasted image 20240419174243.png]]
|
|||
|
|
|||
|
需要先使用XmlDeserialize函数接口,完成,xml反序列化Object
|
|||
|
|
|||
|
![[Pasted image 20240419174207.png]]
|
|||
|
|
|||
|
再调用BinarySerilize函数接口,完成Object类,转二进制的操作
|
|||
|
|
|||
|
![[Pasted image 20240419174700.png]]
|
|||
|
|
|||
|
XmlToBinary函数接口,通过[[GetAssemblies]]配合传参name名字,找到对应的type,调用上述俩逻辑组合,完成xml转二进制的相关操作
|
|||
|
|
|||
|
![[Pasted image 20240421124500.png]]
|
|||
|
|
|||
|
AllXmlToBinary函数接口,是遍历Asset目录下的xml路径,调用XmlToBinary的逻辑,完成全部xml的批量转换
|
|||
|
|
|||
|
![[Pasted image 20240421124848.png]]
|
|||
|
|
|||
|
![[Pasted image 20240421124909.png]]
|
|||
|
|
|||
|
ContainAllFileAB函数接口,配合m_AllFileABab包的,路径数据容器,完成冗余的数据剔除
|
|||
|
|
|||
|
![[Pasted image 20240421125107.png]]
|
|||
|
|
|||
|
设置资源的assetBundleName名称
|
|||
|
|
|||
|
![[Pasted image 20240421125219.png]]
|
|||
|
|
|||
|
对应的是,这标签位置
|
|||
|
|
|||
|
![[Pasted image 20240421125256.png]]
|
|||
|
|
|||
|
打包的时候,会删除无用的Ab包,所以需要,通过ConatinABName函数接口,基于文件名判断,是否为有效的ab包,其中 字符数组strs 后续的传参,会是[[GetAllAssetBundleNames]]函数接口,获取所有的ab包名称数组
|
|||
|
|
|||
|
![[Pasted image 20240421125509.png]]
|
|||
|
|
|||
|
打包之后,存放ab包的文件路径,是Application.dataPath上层,也就是Asset目录上层的,AssetBundle目录 → 对应当前平台的,文件夹下
|
|||
|
|
|||
|
![[Pasted image 20240421130032.png]]
|
|||
|
|
|||
|
打包平台是这里选的
|
|||
|
|
|||
|
![[Pasted image 20240421130244.png]]、
|
|||
|
|
|||
|
目前选中的,是PC的windows平台
|
|||
|
|
|||
|
![[Pasted image 20240421130330.png]]
|
|||
|
|
|||
|
因此,打包后,存放路径,也是对应
|
|||
|
|
|||
|
![[Pasted image 20240421130404.png]]
|
|||
|
|
|||
|
![[Pasted image 20240421130413.png]]
|
|||
|
|
|||
|
在打包的时候,会调用DeleteAB函数接口,删掉以上位置,无关的ab包
|
|||
|
|
|||
|
![[Pasted image 20240421130442.png]]
|
|||
|
|
|||
|
在打包的时候,还需要判断,文件是否在有效路径内,有一个m_ConfigFil的List数据容器,用于存储
|
|||
|
|
|||
|
![[Pasted image 20240421130902.png]]
|
|||
|
|
|||
|
对应存储的是,ABConfig配置文件的,这些路径
|
|||
|
|
|||
|
![[Pasted image 20240421131022.png]]
|
|||
|
|
|||
|
对应逻辑
|
|||
|
|
|||
|
![[Pasted image 20240421131046.png]]
|
|||
|
|
|||
|
是否有效路径的ValidPath函数接口,就是在该容器内,查找确认元素即可
|
|||
|
|
|||
|
![[Pasted image 20240421131112.png]]
|
|||
|
|
|||
|
WriteData函数接口,就是开始构建AB包队列的功能逻辑,通过ValidPath判断,是有效路径后,实例化单个ABBase,完成Path路径,crc校验码等字段的赋值,最后再通过,内置的GetDependencies函数接口,拿到对应它的依赖
|
|||
|
|
|||
|
![[Pasted image 20240421131226.png]]
|
|||
|
|
|||
|
继续,遍历,对应它的依赖,字符数组,如果是.cs脚本文件后缀,跳过即可;
|
|||
|
如果abName,是等于resPathDic对应Path的,说明是依赖自身,continue跳过;
|
|||
|
其他的,依赖,就加到该ab包的ABDependce字段,对应的依赖体容器即可;
|
|||
|
|
|||
|
![[Pasted image 20240421131602.png]]
|
|||
|
|
|||
|
继续,把打包的汇总数据体AssetBundleConfig,分别写入xml和byte文件,其中byte文件,也会打成ab包,所以也调用一下,SetABName函数接口,完成标签设定即可
|
|||
|
|
|||
|
![[Pasted image 20240421132046.png]]
|
|||
|
|
|||
|
对应生成的xml和byte文件
|
|||
|
|
|||
|
![[Pasted image 20240421132250.png]]
|
|||
|
|
|||
|
![[Pasted image 20240421132301.png]]
|