一.关于热更新的详细流程

  1. 首先我们需要需要将本机电脑作为服务器打开,这是第一步

1.1.1如何确定我们的电脑是作为服务器打开的。

我们打开一个浏览器在地址栏中输入127.0.0.1.或者是localhost如果现实的不是链接无法链接即可

如下图所示:

图1

1.1.2如果实在不幸链接失败,下载IIS安装,开启相关的服务即可。不过这里介绍另一种方法。我们下载PHPStudy(软件)安装一直安装到最后运行启动出现下图Apache和MySQL都呈现出绿色即可

此时我们再次链接127.0.0.1就会出现如图1所示的界面,这时我们的服务器就算是搭好了

  1. 第二步下载我们的ToLua框架下载地址如下:https://github.com/jarjin/LuaFramework_UGUI

我们在这里下载好ToLua的框架它是一个工程(压缩包)我们可以在项目里看到它的的文件结构如图所示:

这里我们打开Scenes文件夹下的main场景,并运行,如图所示:

图2作者这边进行过小小的改动,空物体上脚本都挂上了即可

如图是我们的运行结果,这里注意一下这个场景中的空物体GameManager这个空物体的名字不可以改动,子啊运行场景时空物体上只有Main这一个脚本而这个Main脚本中的代码也是极其的简单

public class Main : MonoBehaviour {

void Start() {

AppFacade.Instance.StartUp();   //启动游戏

}

}

只有简单的一句,这里我们不做更深的研究,AppFacade类是一个单例,里面封装了一些个方法StartUp就是在开启我们的框架之后我们这个GameManager空物体上回自动挂上一些脚本这里不做讨论

  1. ToLua框架中一些特殊的类

LuaManager类这个类十分重要,其里面的InitStart方法就是在启动Lua的虚拟机(可以认为是启

动Lua)

LuaState这个类中控制Lua的状态我们可以通过这个类在C#中运行一段Lua代码(DoString方法)或者执行制定的Lua代码(Dofile(这里面是一个Lua文件的路径))

Lualooper控制着整个Lua框架的循环

GameManager:这里进行一些控制如图

在这里我么进项目的初始化,开始的时候我们只需要进InitStart,并且把initialize设置为true

不需要的这里不进行执行和加载

Appconst:整个框架的控制类这里进行框架的配置

UpdateMode不用服务器更新时给他设置为False(测试的时候可以把他弄成False)游戏上线后就要给成true,如果改成true将会用下面的url进行更新,false时将用在本地进行更新

LuaBundleMode:控制Lua代码是否需要进行打包Lua代码每进行一次修改就要对代码进行打包

记住这几个类

  1. 热更新(准备篇):

在安装过PhpStudy后我们会有这样一个发现,在我们的PhpStudy安装文件夹中有这么一个文件夹WWW文件夹,我们项目要更新的资源就放在这里(服务器)这时我们打开我们的项目(打过包的)StreamingAssets文件夹拷贝一份放在这里:如图所示(请注意这个路径)

打开浏览器输入地址http://127.0.0.1/StreamingAssets/files.txt,之后我们可以看到这样的运行结果:请记住这个访问路径

图3

图3中的内容就是我们files.txt中的内容,在使用框架进行热更新的时候,系统会在服务器上下载这个files.txt和本地的进行比对,不一致的内容会被下载(UpdateMode设置为true)

之后我们把服务器中的main.lua打开看一下(这个信息被保存在www文件夹中了)

--主入口函数。从这里开始lua逻辑

function Main()

print("logic start")

print("这是一个新的Lua语句")

print("我是新来的")

--print("我真的是新来的")这两句不会执行

--print("我也是新来的") 这两句不会执行

end

--场景切换通知

function OnLevelWasLoaded(level)

collectgarbage("collect")

Time.timeSinceLevelLoad = 0

end

function OnApplicationQuit()

end

之后我们再比较我们本地的(这时www文件的StreamingAssets文件中的信息是1.0版本,以下即为2.0版本)

--主入口函数。从这里开始lua逻辑

function Main()

print("logic start")

print("这是一个新的Lua语句")

print("我是新来的")

print("我真的是新来的") --会执行

print("我也是新来的")--会执行

end

--场景切换通知

function OnLevelWasLoaded(level)

collectgarbage("collect")

Time.timeSinceLevelLoad = 0

end

function OnApplicationQuit()

end

这是本地和服务器上的资源的区别

5.热更新(运行篇)

我们先来运行在本地更新的结果(UpdateMode设置为false)

记得2.0版本的内容打包

运行结果如图,四条语句全部输出,这时这个是本地更新(服务器的只能输出两条语句)

图4

之后我们再来做服务器端的更新,我们打开APPConst这个文件如图所示:

此时图中的UpdateMode置为true(从服务器上更新)下面的webUrl(更新路径)改为之前红字让大家记住的路径(略有区别,看图),保存运行。结果如图所示:

服务器上的资源只输出两句(区别于上面程序员本地的运行结果)

-------百晓灵狐

Phpstudy下载地址:http://rj.baidu.com/soft/detail/17836.html?ald

这东西可以百度上搜

体验ToLua框架下热更新(Phpstudy)的更多相关文章

  1. Unity编程笔录--ulua+PureMVC框架简单热更新使用

    ulua+PureMVC框架简单热更新使用 前言: 1:作者官网论坛 首先介绍的是这个框架是一位大牛  骏擎[CP]  jarjin   写的,据说原本是"非常多人不知道怎么使用Ulua,所 ...

  2. 关于webpack下热更新?&自动刷新?的小记(非vue-cli)

    写本随笔时:webpack4.6.0 为何标题用?号,因为老衲也不知是否用词正确,大概是这样的说法: webpack4.0引入生产模式和开发模式,在开发时使用 webpack 打包后不压缩,所以只需要 ...

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

    上一篇笔者介绍了关于什么是热更新,为什么需要热更新的技术文章.本篇就专门针对UI框架的热更新功能实现部分展开讨论,讨论的重点是热更新如何与UI框架进行结合? 现在笔者把设计“UI热更新框架”的整体设计 ...

  4. 客户端热更新框架之UI热更框架设计(上)

    什么是热更新,为什么需要热更新?          热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来 ...

  5. 轻松理解webpack热更新原理

    一.前言 - webpack热更新 Hot Module Replacement,简称HMR,无需完全刷新整个页面的同时,更新模块.HMR的好处,在日常开发工作中体会颇深:节省宝贵的开发时间.提升开发 ...

  6. unity游戏热更新

    链接:https://pan.baidu.com/s/1ggWP0OF 第 1 章 : 热更新技术学习介绍 课时1:101-热更新技术学习介绍 11:55 什么是热更新? 举例来说 游戏上线后,玩家下 ...

  7. 热更新(一) 之Lua语法的学习

    热更新 如热更新果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载(浪费流量和时间,体验不好).热更新可以在不重新下载客户端的情况下,更新游戏的内容 ...

  8. Unity热更新技术整理

    一.热更新学习介绍 1.什么是热更新 举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新 ...

  9. Vue--运行项目发送http://localhost:8080/sockjs-node/info请求报错,造成浏览器不能热更新

    今早习惯打开vscode 输入 npm run dev 准备修复测试提出的bug 不料一堆通红的报错,让人感到有点绿的慌. 有问题呢,就需要解决问题.经过一番排查后发现是我昨天为了让测试在我本地项目中 ...

随机推荐

  1. loadrunner中组合场景的应用

    进行性能测试的回归测试时,可以设置组合场景,例如: 这时可以以组的形式运行: 运行效果如下: 当login运行完成后,运行goodslist脚本 . 运行时可以查看运行用户数.事务平均响应时间.吞吐量 ...

  2. PyQt5——基本控件

    PyQt5基本控件使用方法详见:https://blog.csdn.net/jia666666/article/list/5?t=1& PyQt5基本控件汇总: 1.QMainWindow 2 ...

  3. requests库详解 --Python3

    本文介绍了requests库的基本使用,希望对大家有所帮助. requests库官方文档:https://2.python-requests.org/en/master/ 一.请求: 1.GET请求 ...

  4. Confluence 6 升级完成后的检查

    这个页面中的文章将会为 Confluence 管理员为 Confluence 升级完成后 提供检查列表以确保 Confluence 的升级顺利完成.这个检查列表没有包含所有需要检查的错误,但是将会检查 ...

  5. Vue之添加全局变量

    定义全局变量 原理: 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或 ...

  6. time 与 datetime 模块的常用方法

    时间格式 一个名词: UTC(Coordinated Universal Time):格林威治天文时,世界标准时间.中国为东八区 UTC+8 在编程的世界中,一定要了解的几种时间格式: 1.时间戳 从 ...

  7. vue手把手教你实现走马灯商品左右轮播图

    <template> <div> <div class="back_add"> <div class="threeImg&quo ...

  8. Windows Socket 编程_单个服务器对多个客户端简单通讯

    单个服务器对多个客户端程序: 一.简要说明 二.查看效果 三.编写思路 四.程序源代码 五.存在问题 一.简要说明: 程序名为:TcpSocketOneServerToMulClient 程序功能:实 ...

  9. Debian Nginx 下载 .apk 文件时候报 403 错误 [1]

    一.版本介绍 Degian : 8 jessie Nginx  : 1.6.2 发生时间 : 2018-12-15 二.问题说明 客户浏览器访问Nginx的公开目录中放入了一个.apk文件,公开目录可 ...

  10. 微信 + weui 框架记录

    WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一: 包含button.cell.dialog. progress. to ...