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