惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
WordPress大学
WordPress大学
博客园 - 聂微东
L
LINUX DO - 最新话题
月光博客
月光博客
小众软件
小众软件
T
Troy Hunt's Blog
A
Arctic Wolf
量子位
I
Intezer
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
NISL@THU
NISL@THU
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
有赞技术团队
有赞技术团队
N
News and Events Feed by Topic
美团技术团队
The Cloudflare Blog
P
Privacy International News Feed
S
Security Affairs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
N
News | PayPal Newsroom
Apple Machine Learning Research
Apple Machine Learning Research
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
Hacker News: Ask HN
Hacker News: Ask HN
雷峰网
雷峰网

博客园 - 刘国柱老师

《Unity3D/2D游戏开发从0到1(第三版)》书籍2026年已正式发行! VisualEffectGraph基础操作 --创建VEG项目步骤讲解 VisualEffectGraph概述 ProBuilder操作一览表 ProBuilder快速原型开发技术 ---进阶功能操作 ProBuilder快速原型开发技术 ---模型精细化操作 ProBuilder快速原型开发技术 ---不规则模型与材质 ProBuilder快速原型开发技术 ---操作基础 ProBuilder快速原型开发技术 ---ProBuilder基础操作 Python 运算符 2020年初: “问题”还是“机遇”? 热更新之lua框架设计 2019Unite大会 “996” 工作制热议与奋斗者协议 客户端热更新框架之UI热更框架设计(上) 移动端(手机)禁止黑屏问题解决方案 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结 Unity2017.x 版本的下载安装 关于《Unity3D/2D游戏开发从0到1》书籍再版说明
客户端热更新框架之UI热更框架设计(下)
刘国柱老师 · 2019-05-09 · via 博客园 - 刘国柱老师

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

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);
            替换为 

            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
   
3: AssetBundle 框架(ABFW)源码工程下载链接:
           链接:https://pan.baidu.com/s/1VOoL9K3dUTpqxkwCcrQWYw
           提取码:hla8

4:本文讲解通过UI与AB框架整合,最终形成的“热更新UI框架”( UIPlusABFramework)源码下载链接:
       链接:https://pan.baidu.com/s/1C6e2ROHsqSaBEuCtRrzqpA
       提取码:dfq6