Deer_Gf之构建Packed包资源

发布时间 2023-07-12 17:57:48作者: AlanDu

Deer_Gf之构建Packed包资源

说在前面

        听到很多群友希望框架支持第一次出包走包体内资源后续有更新增加更新资源
        本来Gameformework(Gf)框架支持Packed包资源模式,但是Deer扩展的GF框架,增加了程序集热更资源和表热更资源,由于这两块资源下载没有写完整,在此之前,Deer_Gf是不支持Packed包资源模式。接下来,我们开始让Deer_Gf也支持Packed包体模式!下面我们开始!

环境

开始

1.了解GF Packed模式资源
  1. 首先我们了解一下Gf的Packed资源怎么处理,找到ResourceManager.ResourceChecker.cs脚本,如下图,我们能看到在检查资源的时候会把Local(m_ReadOnlyPath,m_ReadWritePath)资源列表,Remote资源列表读取了出来。
    image
  2. 在然后在ResourceManager.ResourceChecker.CheckInfo.cs脚本判断了三个资源列表的信息,如下图,先判断m_ReadOnlyInfo(StreamingAssets下GameFrameworkList.dat)资源列表和m_VersionInfo(缓存资源目录下的GameFrameworkVersion.dat)资源列表对比,如果不满足了,又对比了m_ReadWriteInfo(缓存资源目录下GameFrameworkList.dat)资源列表和m_VersionInfo(缓存资源目录下的GameFrameworkVersion.dat)资源列表对比,都没有满足,则资源需要更新!
    image
  3. 那么此时我们了解了Gf资源Packed是对比了三个资源列表,判断是否资源需要更新,那么我们就可以知道包体资源在构建的时候需要和Full一起构建,然后把full目录资源上传到远端,这样第一次出包后可以不更新包体自带的资源了
    image
2.在Deer_Gf中构建Packed资源
  1. 上面我们已经了解到Gf构建包体自带资源构建逻辑以及构建方法后,那么我们现在做的要让Deer_Gf中的Config表和程序集下载也需要支持这样的模式,才能让Deer_Gf也支持Packed模式,本来在之前的版本中,我们已经能正常在UpDatable更新模式和Package单机包模式正常跑通,所以我们只需要稍微改动一下就可以支持。如下图为Packed资源
    image

  2. Config表和程序集在Deer_Gf中Updatable热更模式读取和下载对比都是在缓存目录进行,那么当我们需要第一次出包构建包体资源,不想在第一次下载,那么我们的Config表和程序集也需要放在StreamingAssets目录下随包出去,我没有写的Gf那么复杂系统性,为了兼容在缓存目录读取资源,所以在检查资源的时候对比版本号或者对比内容,如果和远端版本列表相同,那么只需要把StreamingAssets目录资源Copy到缓存目录下,下次进包的时候再次判断远端列表和本地列表的版本。如下图加载远端版本列表和本地版本列表:
    image
    image
    如下图为把本地资源copy到缓存目录里逻辑:
    image

  3. 如上逻辑开发完成,我们需要构建资源测试,第一次构建如下图:需自带出包的资源勾选Packed选项,然后刷新xml,第二次构建就可以不用勾选
    image

  4. 第一次开始构建点击StartBuildResources,同样如下图,需要勾选Full和Packed两个选项,第二次出资源就可以不用勾选Packed
    image

  5. 构建完成后在StreamingAssets下的资源目录结构
    image

  6. 构建完成后需要提交到远端的资源目录结构
    image

  7. 然后启动游戏发现如果资源没有更新,启动app是没有资源下载提示的界面,恭喜你的Packed资源成功了。

3.到此,Deer_Gf Packed 资源模式分享完毕。

嗯~~~可以请我喝杯咖啡么(❁´◡`❁)