LuaFramework_UGUI的热更新简单实现和无法热更新的解决方案(六)

2023-10-21 13:20

本文主要是介绍LuaFramework_UGUI的热更新简单实现和无法热更新的解决方案(六),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本篇博客主要讲述用LuaFramework简单实现热更新的方法,和热更新时遇到的巨大的坑。
一般我们在用LuaFramework进行热更新的时候,通常时把AppConst的更新模式打开,然后LuaFramework-Bulid xxx Resource 打下包,发布一下。然后在需要热更新时修改下界面,在LuaFramework-Bulid xxx Resource打下包,把新的StreamingAssets放到服务器上,这样客户端只要启动,就实现了热更新了吧。
但是,肯定也有人遇到过热更新不成功的问题吧。
很巧的是博主恰巧遇到了这种问题,无论怎么更新修改界面,打包,放到服务器上,却还是发现客户端和原来是一个样子。后来我开始一路疯狂进行排查有可能出现错误的问题,首先,第一个,版本文件,发现版本文件也是改变了,所以版本文件并没有任何问题。接着我开始排查是不是因为解压出现的问题,幸运的是,解压也没有任何问题。所以我就断定是下载的问题,肯定是下载没有下载到,毕竟LuaFramework是通过www进行热更新文件载的。果然,这个BUG我还是没有找到,此时的心中一万只吃草的马路过,崩溃至极。但我还是压制住了那颗想要砸键盘的狂躁之心。对,这个时候我该冷静,我该静下心去仔细想想BUG的最终去路。忽然,在地狱与死亡的交接点我仿佛看到了一道光,那种心情,我恍然大悟,既然版本文件没问题,下载也进行下载了,说明文件是完整的,唯一可能出现问题的就是读取文件错误,造成解压错误,直至热更新失败。
所以我就开始在路径上下功夫,功夫不负有心人。我终于找到了Bug所在之处,就是因为LuaFramework框架默认的读取的路径出了错
如下图:
在这里插入图片描述
黑色箭头所指的路径是他自动读取的路径,后来被我修改成红色箭头所指的路径。
至此,无法热更新完美解决。
那么,黑色路径所指向的地址是哪呢?
答案就是下图种的路径,在我们发布时同时会有一给文件夹,客户端每次解压都是解压在发布是同exe一起的文件里的
StreamingAssets,所以,在我们每次启动客户端时,他读取的一直是这个文件,造成成我们热更新失败。
所以,我把路径改为上图的路径时,热更新失败就问题就完美解决。

在这里插入图片描述

所以下面让我们进行快乐的热更新吧。

1.首先把我们的热更新模式打开,并且修改一下测试更新地址,地址是服务器上的地址,不要错。

在这里插入图片描述

2.接着点击LuaFramework-Bulid xxx Resource 打下包,发布一下,发布出来会有一个Data文件夹和以个exe,我们打开自己的服务器,这里博主用的是ftp服务器,接着我们运行exe客户端。客户端就长这样子。

在这里插入图片描述
3.
3.1 接下来我们在LoginPanel上随便创建一个Image。创建完成之后Apply一下。
3.2 然后LuaFramework-Bulid xxx Resource 打下包,打包完成不要发布。
3.3 在Assets中找到StreamingAssets文件夹,右键Show in Explorer打开文件所在路径,把服务器上原来的StreamingAssets文件删除,把现在已经打包好的StreamingAssets文件夹放在上面,启动客户端。
在这里插入图片描述

这时我们会发现,在没有经过重新发布的前提下,我们LoginPanel界面多了一张Image。
此时,热更新成功!
所以,在我们的程序出现BUG时,一定不要狂躁,要静下心来,细细去排,不要放过一点可能。这样我们的程序才能更加健壮,我们的代码才能跑起来。

努力积才能,壹叶便成名!

这篇关于LuaFramework_UGUI的热更新简单实现和无法热更新的解决方案(六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254673

相关文章

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、