美文网首页
ToLua的Example示例学习笔记_总集篇

ToLua的Example示例学习笔记_总集篇

作者: 凌枫望星月 | 来源:发表于2020-05-08 23:28 被阅读0次

    记录一下对ToLua热更新的个人理解,我一个很棒的室友总是跟我说,如果你真的弄懂了一个东西,那么一定能和别人讲明白,这样才是真的弄懂。如果不能讲清楚的话,说明你掌握得还比较肤浅。

    1」说明

    • 我准备写一篇ToLua的Example总集篇来记录我的学习历程。
    • 网上也有很多示例解析或者笔记,有的还是Github的官方示例说明(只有开头几个示例),有的则是开发团队的半官方文档(说明稍微有点简短),还有的是许多博主个人学习的经历见解,这里就稍微让我博采众长,面向刚刚接触ToLua的同学,尽量以写清楚,看明白的啰嗦话,让大家更好的理解示例代码。

    2」Lua热更新简介

    这里先给一条需要理解的话:

    • 使用Lua热更新就是在Unity环境里内嵌一个Lua虚拟机,经常变动的和执行效率没有太高要求的逻辑代码,可以用Lua实现
      看到这句话,我忍不住就要问了:
      1、为什么要用这个所谓的Lua热更?
      2、在Unity环境里内嵌一个Lua虚拟机有什么用?
      3、为什么说“经常变动的和执行效率没有太高要求的逻辑代码,可以用Lua实现”?

    • 对于以上的问题,我个人的理解是这样的

    1. 为什么要用这个所谓的Lua热更?
    • 答:C#不是即时编译型语言,而Lua是,所以要在C#代码里改一点细枝末节的东西,都要重新打包发布一次,(我以前做可视化程序的时候,每次发布新版本也是一个痛苦的过程,特别是WebGL版本发布,需要15~20分钟的时间),而且用户不得不重新下载新发布的版本,属实有点麻烦。而使用热更新,相当于在C#代码中拿出来一部分,用Lua这种即时编译型语言来代替实现,我们还可以方便的更改Lua代码,也不用重新发布新版本了。还有一个好处,我们可以通过将Lua代码上传到服务器的方式,让所有用户享受到同样的更改,因为一开始我就是要在服务器下载这些代码来用的,相当于把代码当做一个个传输的文件,这样就如臂使指,方便多啦。
    1. 在Unity环境里内嵌一个Lua虚拟机有什么用?
    • 答:虚拟机相当于C#与Lua之间的桥梁,虚拟机映射了C#代码,让Lua代码可以获得C#代码中的一些对象,同时虚拟机运行Lua脚本(静态绑定什么的我也不太懂,说不清楚就不说了)。
    1. 为什么说“经常变动的和执行效率没有太高要求的逻辑代码,可以用Lua实现”?
    • 答:Lua的执行效率没有C#高,不宜变动和有效率要求的总体逻辑框架和组件功能都在C#里完成,Lua就负责具体功能的调用逻辑,这样就充分利用了C#的高效和Lua的灵活。

    3」具体一点儿

    • 小艾写了个可视化程序,里面用了Tolua来热更新,热更新的Lua代码就一句话:print("Hello World"),然后打包发布了,并把发布好的程序复制到自己手机上,热更新的Lua文件作为AssetBundle,上传到某个服务器上。然后打开手机上的程序。程序启动,在Awake里通过网络下载服务器的Lua文件,下载完成后才执行下面的主程序,主程序要求执行Lua代码,打印一行Hello world出来。这时,小艾又到上传了个新的Lua文件的AB包到服务器上,Lua代码为print("DIO the World"),然后重启了手机游戏,这就会让程序要求执行Lua代码的时候执行新下载的第二个lua代码,打印DIO the World

    4」后面的记录安排

    • 我想按次序先把示例部分的个人理解写完,尽量写完善一点,有几个后面的示例想先放一放,因为json,protobuf这些我自己都还不太懂,我先写我理解的吧,其中可能会穿插assetbundle和类的继承与重写函数还有委托的一些知识,用到的时候可能会再介绍一遍,也可能会重开一篇介绍,放在Unity文集里。

    相关文章

      网友评论

          本文标题:ToLua的Example示例学习笔记_总集篇

          本文链接:https://www.haomeiwen.com/subject/lcccnhtx.html