客户端热更新框架之UI热更框架设计(下)

    上一篇笔者介绍了关于什么是热更新,为何须要热更新的技术文章。本篇就专门针对UI框架的热更新功能实现部分展开讨论,讨论的重点是热更新如何与UI框架进行结合?
    如今笔者把设计“UI热更新框架”的总体设计与构建过程表述以下,最后附带源码工程的下载连接,供广大学员参考研究。若是你们有什么不明白的地方,欢迎你们在评论区进行讨论。
   
1:首先基于笔者之前设计的SUIFW 框架,作进一步功能完善。
     完善UI框架对于复杂窗体的直接转向功能。为了小伙伴们可以更好的理解本技术,文章末尾特提供了下载连接供你们参考。

1.png


2:通过重构完善后UI框架与AB框架(即:AssetBundle 框架,本框架文章末尾提供×××连接) 的初步资源、脚本整合处理。
       2.1> 创建一个全新的项目名称例如:UIPlusABFramework。
       2.2> 项目中增长存放须要打包资源的目录。 例如“AB_Resurces”目录。
       2.3> Resources目录原来的资源文件,除了配置文件外,所有拷贝到AB_Resources 目录下。使用AB框架,对资源进行打包处理,加载到StreamingAssets 目录下。

3:原始UI框架核心类(UIMangager.cs)的改动。
      3.1> 把原UI核心类底层加载机制 Resources.Load() 的单机职能,改成以AB框架为核心的AB包的调用加载机制。
具体说明:
        ResourcesMgr.GetInstance().LoadAsset(strUIFormPaths, false);
       替换为      
json

       AssetBundleMgr.GetInstance().LoadAssetBundlePack(xx,xx,xx,LoadAllABComplete){}
       private void LoadAllABComplete(string abName){}

      3.2> 本来”Resources” 类须要的UI窗体路径的(基于Json配置文件的)参数, 改成了以AB框架中“场景名称、包名称、资源名称”为参数核心的机制。固然本部分也须要对核心配置文件"UIFormsConfigInfo.json" 作大的改动。(具体在第4节详述)。

      3.3> 因为UIMangager.cs中,对于直接调用AB框架核心API,有不少不方便的地方。即须要写不少代码,且从UI与AB两大框架解耦的思想出发,特设计一个中间过渡脚本(例如: ABLoadAssetHelper.cs),利于两大框架之间的低耦合处理。本设计过程参考经典设计模式中的“代理模式”、“桥接模式” 等思想。

     3.4> 以上两大框架的结合与重构难点在于: 原始UI框架本质是“串行运行”,而AB框架资源调用是“并行运行”。 因此协调资源加载的前后顺序是“热更新UI框架”的重点与难点。

4: 原始UI框架核心类(UIMangager.cs)中对于Json配置文件的改动。
        原始配置文件"UIFormsConfigInfo.json" 以键值对的方式,存储了UI窗体预设名称与UI窗体预设在Resources目录下的相对路径的映射关系。可是在改造后的配置文件,全部的AB包都是默认加载到StreamingAssets 目录下。
        因此其配置文件中的“值”,就改成AB包的参数:“场景名称、包名称、资源名称”。由于有三个参数,能够定义在一行,中间加一个分隔符便可。在程序中能够作分割处理便可。详细请读者查看更新后定义的"UIFormsConfigInfo.json"配置文件。


5: 以上步骤开发完毕后,须要使用UI框架自带的演示示例项目,作加载验证测试。
        若是能够正确无误的运行原UI框架全部的功能设计,则咱们的“热更新UI框架”,就算是初步重构完毕了。
固然这只是笔者设计的“热更新框架设计之客户端热更框架”的一小部分,咱们在下一篇中,会对国内部分游戏公司所推崇的“纯lua热更新”框架进行介绍与设计讲解,敬请期待。


附录:


1: UI框架(SUIFW框架Ver1.1) 下载连接:
           连接:https://pan.baidu.com/s/1HU22Gr6GpWmT77vp4DcFZg
           提取码:r4r7
   
2: AssetBundle 框架(ABFW)源码工程下载连接:
           连接:https://pan.baidu.com/s/1VOoL9K3dUTpqxkwCcrQWYw
           提取码:hla8

3:本文讲解经过UI与AB框架整合,最终造成的“热更新UI框架”( UIPlusABFramework)×××连接:
           连接:https://pan.baidu.com/s/1C6e2ROHsqSaBEuCtRrzqpA
           提取码:dfq6设计模式

相关文章
相关标签/搜索