写在前面

  • 我第一次接触到LuaFramework_UGUI是在一个工作项目中,当时也是第一次知道toLua。但我刚开始了解LuaFramework_UGUI时十分混乱,甚至将LuaFramework_UGUI等同于toLua。在读很多LuaFramework_UGUI相关博客时也常感到一头雾水,比如在读完4篇“基础知识”博客后,我对LuaFramework_UGUI更新流程仍然是一知半解。我试过直接在LuaFramework_UGUI里加入自己的测试UI,虽然也能成功更新出现,但我认为这并不是一次合格的探索,我只是简单的知道了怎么用,但我并没了解到重点——热更流程。后面我在回顾LuaFramework_UGUI时才理清楚这些混乱的原因。
  • 本篇博文重点不在阐述LuaFramework_UGUI热更流程,而在记录我当时阅读LuaFramework_UGUI时做了什么才觉得混乱,以及如何解决混乱的介绍,不涉及具体代码。

混乱

  • 【混乱1】直觉混乱:我首先接触到是LuaFramework_UGUI框架,通过同事了解到项目是使用toLua来解决热更问题,所以我直觉上把将LuaFramework_UGUI等同于toLua,虽然我看过toLua在Github上提及到LuaFramework_UGUI是在“FrameWork and Demo”一栏,但我当时认为那是toLua作者为了演示热更才另开一个库叫LuaFramework_UGUI。
  • 【混乱2】阅读混乱:因为我直接开始阅读LuaFramework_UGUI代码,脑中冒出有很多问题,有些问题很重要,例如热更流程,而有些问题特别琐碎,例如作者为什么要设计这个结构,为什么要用这个工具,我认为我不会忘记最重要的问题,而有些琐碎问题当时查了资料就明白了,所以没有对所有问题做记录。在一次次测试中常忘了代码阅读到了哪里,所以确认进度也花了时间。
  • 【混乱3】目的混乱:我关注重点是LuaFramework_UGUI如何实现热更,但在看代码的过程中常被不认识的知识带跑。在看相关博客时,也有“我把这系列的博文看完就能了解热更重点”的做法。虽然我有过直接在LuaFramework_UGUI里加入自己UI检验热更的测试,但我认为到这里已经是“明白怎么用”的程度,后续探索就戛然而止。

解决混乱

  想要解决之前的混乱,真正完整明白自己的关注重点,我现在只想到了一个笨办法,那就是自己另开一个测试工程,把LuaFramework_UGUI自己实现一遍。现在的我已经有了一些经验,能保证自己的重点不会跑偏,而且自己实现一遍也能回忆起之前错过的所有问题,补上解答。

  我在回顾LuaFramework_UGUI时发现其作者已经停止更新此框架,而且也有了V2版的LuaFramework_UGUI(也已停更),现在他的热更框架已经到FinalFramework。我浏览了FinalFramework的演示内容,想过要不从实现FinalFramework开始,但考虑到以前有对LuaFramework_UGUI的踩坑笔记,从一个新框架开始会很费时间,而且这和我的重点有点南辕北辙,于是回到原先的LuaFramework_UGUI框架上。

  • 【解决 混乱1】在测试工程上写东西前,我去回顾了toLua和LuaFramework_UGUI的G站介绍,再次把二者下载下来运行,现在看它们的区别就很明显了。最直观的印象是toLua带了20多个例子,但只关心热更的读者是找不到明显讲热更内容例子的,而LuaFramework_UGUI一运行就会看到一个UI面板,点击UI面板右下方按钮会有反应。这时候再次看toLua和LuaFramework_UGUI的G站介绍就很容易理解:toLua的应用框架示例中有LuaFramework_UGUI,toLua自身并无热更示例,想看热更示例请直接跳到LuaFramework_UGUI。

  • 【解决 混乱2】我是在一个什么内容也没有的测试工程上开始写LuaFramework_UGUI的代码,开了一个新的word文档来记录我所有的问题,现在里边记录的问题已经不止探索LuaFramework_UGUI过程中遇到的问题,还包括了最最开始选框架的问题——如果我是主程,我为什么非得选toLua框架。按人的认知顺序,我是从负责运行启动的C#脚本开始写,实现目标只有一个——和LuaFramework_UGUI一样,弹出面板,点击按钮有回应。不清楚的内容先在注释里写上标记(使用相同的固定符号能帮助我再次看到这段代码时明白我是没写还是有没解决的问题),等待后续完善。代码进度记录记在桌面便签里方便查看(我记的是脚本名+代码行数)。通过一次次测试,我发现我实现的内容和LuaFramework_UGUI引导顺序一样,先要写打包部分,后写启动和检测是否需要更新部分。我写到后期Lua内容时就发现必须加入toLua,这时我将测试工程内容搬到toLua工程中,但在后面测试时我发现它和LuaFramework_UGUI用的toLua还是有些不一样,LuaFramework_UGUI作者在toLua里加入一些了新功能(在LuaFramework_UGUI的G站介绍的更新日志里有提到),但如何往toLua加新功能并不是我关注的重点,所以我直接用LuaFramework_UGUI的toLua部分替代了我的测试工程toLua部分。
  • 【解决 混乱3】因为实现重点是如何热更,所以有很多内容不应关心:服务器代码是第一个最不关心的,而在客户端这边,因为我之前有写过和服务器通信代码的经验,所以LuaFramework_UGUI的和服务器通信这一部分忽略,我直接拷过来用。UI具体显示内容也不是关心重点,也拷过来用。一看就不相关的代码一律不写直接拷,比如TimerManager。在具体敲代码过程中,也不考虑起名、改名和优化问题,虽然常有优化源码的冲动,但这确实不是实现重点,不过可以在注释里补上说明。放弃“我把这系列的博文看完就能了解热更重点”的想法,只在遇到具体问题时去查相关博客,后来我发现在实现整个框架内容后再回去看这些博客,能很清楚这些博客的讲述重点。

【Unity】阅读LuaFramework_UGUI的一种方法的更多相关文章

  1. 使用 Unity* 进行并行处理的一种方法

    本文展示如何使用 Unity* 对游戏进行并行处理,以及如何使用游戏引擎执行与游戏相关的物理.在这个领域内,现实感是成功的一个重要标志.为了模拟真实世界,许多动作需要同时发生,这需要并行处理.创建两个 ...

  2. python 多线程编程之threading模块(Thread类)创建线程的三种方法

    摘录 python核心编程 上节介绍的thread模块,是不支持守护线程的.当主线程退出的时候,所有的子线程都将终止,不管他们是否仍在工作. 本节开始,我们开始介绍python的另外多线程模块thre ...

  3. unity 改变鼠标样式的两种方法

    1.第一个直接改变鼠标样式 public var cursorTexture:Texture2D; private var changeFlag = false; function Update(){ ...

  4. Unity iOS 项目的一种性能评测方法

    [Unity iOS 项目的一种性能评测方法]

  5. JAVA 集合 List 分组的两种方法

    CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...

  6. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  7. [转载]Javascript异步编程的4种方法

    NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中,使用“回调”是最常见的. 其实还有其他4种实现异步的方法: 在此以做记录 --- http://www.r ...

  8. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

  9. Javascript定义类(class)的三种方法

    将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...

  10. 使用C#进行图像处理的几种方法(转)

    本文讨论了C#图像处理中Bitmap类.BitmapData类和unsafe代码的使用以及字节对齐问题. Bitmap类 命名空间:System.Drawing 封装 GDI+ 位图,此位图由图形图像 ...

随机推荐

  1. tvm中使用了xgboost库中的_fmt_metric

    _fmt_metric这个xgboost的回调函数已经被遗弃了. 为了能跑起来tvm,可以pip install xgboost==1.5.0

  2. DOM DEM DLG DRG

    以下有不同的说法,但是意思都很相近.一. DOM (数字正射影像图):利用数字高程模型对扫描处理的数字化的航空相片.遥感影像,经逐个像元纠正,按图幅范围裁切生成的影像数据,它的信息比较直观,具有良好的 ...

  3. 浅谈JS中的element.style和window.getComputedStyle()的区别

    MDN对于element.style的解释 被高光的句子中的inline style属性是指css内联样式,即元素的style属性的属性值 总结一下,element.style只能获取到元素的styl ...

  4. 关于邮箱怎么验证是不是真实的企业邮箱(java汉字和英文呼唤)

    企业邮箱的域名一般都是zhangsan@公司域名,或者zhang_san@公司域名这种形式.这里我只列举zhangsan@公司域名这种形式. 公司要我做一个企业邮箱的模糊匹配和验证,刚接到以为很难.结 ...

  5. 面试官:来说说 https 和 http 区别?

    http 和 https的区别? 一.传输信息安全性不同 1.http协议:是超文本传输协议,信息是明文传输.如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息. 2.h ...

  6. Xamarin.Android 踩坑记

    将数据发送给微信 var dbFile = Path.Combine(DBSetting.GetSetting().DBDirectory, $"{BLL.SelectProject.DBN ...

  7. 2170. 使数组变成交替数组的最少操作数 (Medium)

    问题描述 2170. 使数组变成交替数组的最少操作数 (Medium) 给你一个下标从 0 开始的数组 nums ,该数组由 n 个正整数组成. 如果满足下述条件,则数组 nums 是一个 交替数组 ...

  8. 几款Android 应用自动化测试工具

    本文转自:https://blog.csdn.net/hebbely/article/details/78901466 简述: 本文介绍几款流行的 Android应用自动化测试工具. Monkey测试 ...

  9. Windows本地文件上传到Linux服务器(腾讯云)

    环境 本地 操作系统:Window 10 企业版LTSC;内存:8GB;操作类型:64位. 服务器 CentOS 8(1核2GB,1Mbps) 64位 ,已安装Docker(CentOS 8 的doc ...

  10. JS篇(008)-require 与 import 的区别

    答案:两者的加载方式不同.规范不同 第一.两者的加载方式不同,require 是在运行时加载,而 import 是在编译时加载 require('./a')(); // a 模块是一个函数,立即执行 ...