【Unity】阅读LuaFramework_UGUI的一种方法
写在前面
- 我第一次接触到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的一种方法的更多相关文章
- 使用 Unity* 进行并行处理的一种方法
本文展示如何使用 Unity* 对游戏进行并行处理,以及如何使用游戏引擎执行与游戏相关的物理.在这个领域内,现实感是成功的一个重要标志.为了模拟真实世界,许多动作需要同时发生,这需要并行处理.创建两个 ...
- python 多线程编程之threading模块(Thread类)创建线程的三种方法
摘录 python核心编程 上节介绍的thread模块,是不支持守护线程的.当主线程退出的时候,所有的子线程都将终止,不管他们是否仍在工作. 本节开始,我们开始介绍python的另外多线程模块thre ...
- unity 改变鼠标样式的两种方法
1.第一个直接改变鼠标样式 public var cursorTexture:Texture2D; private var changeFlag = false; function Update(){ ...
- Unity iOS 项目的一种性能评测方法
[Unity iOS 项目的一种性能评测方法]
- JAVA 集合 List 分组的两种方法
CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- [转载]Javascript异步编程的4种方法
NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中,使用“回调”是最常见的. 其实还有其他4种实现异步的方法: 在此以做记录 --- http://www.r ...
- python获取字母在字母表对应位置的几种方法及性能对比较
python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...
- Javascript定义类(class)的三种方法
将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...
- 使用C#进行图像处理的几种方法(转)
本文讨论了C#图像处理中Bitmap类.BitmapData类和unsafe代码的使用以及字节对齐问题. Bitmap类 命名空间:System.Drawing 封装 GDI+ 位图,此位图由图形图像 ...
随机推荐
- el-table更新数据页面闪烁问题
情况是这样,渲染了一个table,高度是固定的.所以会有滚动.其中的某一列的数据只显示了部分内容,鼠标浮上加载全部,用el-popover浮框显示. 但每次改变tableKey会触发整个table的重 ...
- 阻止form表单默认跳转
form表单提交后,会默认跳转
- IDEA 开发SSM
1.配置MAVEN 2.初始化SpringBoot 官网API:https://spring.io/projects/spring-boot 初始化SpringBoot:https://start.s ...
- C# DateTime转换为字符串
12小时制:DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 24小时制:DateTime.Now.ToString("yyyy- ...
- 一例OSS问题排查
某品牌OSS存储,使用IP+PORT可以正常访问.使用NG代理后,不论是IP还是域名访问都不支持SDK访问,但是使用S3客户端可以正常访问. 通过抓包对比发现,S3客户端如下 SDK访问抓包如下 判断 ...
- Android-AccessibilityService
概述 AccessibilityService用于提供辅助功能服务,其在后台运行,并在触发AccessibilityEvents时由系统接收回调.此类事件表示用户界面中的某些状态转换,例如,焦点更改, ...
- Word06 黑客技术office真题
1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...
- vue data functions should return an object
报错: 原因:data里没写return{}
- Java数组之冒泡排序【重点】
冒泡排序 冒泡排序是最为出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较. 我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2). ...
- vue项目的两种构建工具Vue CLI和Vite
Vue CLI官方项目搭建工具,使用的打包器是webpack,webpack使用的模块化规范是commonjs模块: Vite主要特点是开发环境启动迅速,因为是使用的ES模块,这是在现代浏览器开始原生 ...