前言

因工作关系,需要对手头的项目进行热更新支持。了解后发现,Lua的几个变种:XLua、ToLua(原uLua)和Slua都可以做Unity热更,而ToLua更是提供了一个简易的热更框架--LuaFramework_UGUI,使得上手变得容易,因此选定LuaFramework_UGUI框架来实现项目的热更功能。

当然,容易是相对的,对一个小白来说要弄懂这一套流程和概念并不简单。网上相关资料不少,但大多是零散而雷同的,很难让一个此前对热更缺少认知的人快速上手。因此我将自己的爬坑经历整理成文,希望能对正焦头烂额,不知道如何下手的你提供一点帮助。

01.如何获得LuaFramework框架?

1.进入ToLua的官网:http://www.ulua.org/index.html(ToLua是uLua的升级版,不要问为什么是ulua.org)

2.点击LuaFramework_UGUI的地址,打开框架在github上的位置:https://github.com/jarjin/LuaFramework_UGUI,见图1-1

(如果你是NGUI用户,也可以选择NGUI对应的框架)

图1-1

3.点击“Clone or download”按钮,以zip形式下载最新的框架代码,为方便追溯,这里我将这个压缩包重命名为“LuaFramework_UGUI-master-20190327.zip”。

你也可以点击这里,下载我所用的框架包

02.运行LuaFramework框架示例

解压刚刚下载好的压缩包,发现里面是一个Unity工程(如图2-1),于是用 unity打开此工程。

图2-1

我使用的Unity版本为5.5.5f1,会提示需要升级,是否备份,点“Go Head”就行。然后会弹出“自动生成”对话框(见图2-2),点确定。

图2-2

打开工程后,找到Main场景,直接运行,会报错“没有找到框架所需要的资源,单击Game菜单下Build xxx Resource生成”,见图2-3:

图2-3

根据提示,找到LuaFramework菜单下的Build xxx Resource项(并非提示的Game菜单)。因工程打开默认为Windows平台,所以选择“Build Windows Resources”菜单。

图2-4

等待操作完成后,控制台会打印许多警告,不用理会,直接再次运行,出现如图2-5所示界面。框架以Lua代码的形式动态的创建了一个界面,看到此界面表示运行LuaFramework_UGUI框架成功,也表明这个框架运行良好。

(界面右下角的Button按钮是测试与服务器的通讯功能,此处暂不细述。)

图2-5

本篇至此结束,下一篇我将会梳理此框架中用Lua创建一个面板的基本流程。

思考

问:ToLua、XLua以及SLua,它们之间是什么关系?

答:个人理解,Lua定义了一种语言规范,而ToLua、Xlua、Slua都是这种规范的一种实现。

问:Unity、ToLua、LuaFramework_UGUI,它们之间有什么联系?

答:ToLua搭建了一个Lua语言与Unity中c#语言沟通的桥梁,借助ToLua,你可以在C#语言中调用Lua方法,也可以在Lua语言中调用C#方法。

而LuaFramework_UGUI则是基于ToLua的这种能力实现的一个热更新方案(提供包括资源包管理、下载、加载等一系列功能)。

以个答案均为个人理解,如有不对,敬请指出。

Unity3D热更新之LuaFramework篇[01]--从零开始的更多相关文章

  1. Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板

    在上篇文章 Unity3D热更新之LuaFramework篇[01]--从零开始 中,我们了解了怎么获得一个可用的LuaFramework框架. 本篇将我会先介绍一下如何配置Lua开发环境,然后分析在 ...

  2. Unity3D热更新之LuaFramework篇[10]--总结篇

    背景 19年年初的时候,进到一家新单位,公司正准备将现有的游戏做成支持热更的版本.于是寻找热更方案的任务就落在了我头上. 经过搜索了解,能做Unity热更的方案是有好几种,但是要么不够成熟,要么不支持 ...

  3. Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法

    时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一. ...

  4. Unity3D热更新之LuaFramework篇[03]--prefab加载和Button事件

    在上一篇文章 Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板 中,我介绍了LuaFramework加载面板的方法,但这个方法并不适用于其它Prefab资源,在这套框 ...

  5. Unity3D热更新之LuaFramework篇[07]--怎么让unity对象绑定Lua脚本

    前言 在上一篇文章 Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的 中,我分析了由LuaBehaviour来实现lua脚本生命周期的方法. 但在实际使用中 ...

  6. Unity3D热更新之LuaFramework篇[09]--资源热更新与代码热更新的具体实现

    前言 在上一篇文章 Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建 中,我介绍了热更新的基本原理,并且着手搭建一台服务器. 本篇就做一个实战练习,真正的来实现热 ...

  7. Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

    在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此 ...

  8. Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建

    前言 前面铺垫了这么久,终于要开始写热更新了. Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新. 资源更新是Unity本来就支持的,在各大平台也都能用.而脚本的热更新在iOS平台 ...

  9. Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的

    前言 用c#开发的时候,新建的脚本都默认继承自Monobehaviour, 因此脚本才有了自己的生命周期函数,如Awake,Start, Update, OnDestroy等. 在相应的方法中实现游戏 ...

随机推荐

  1. C#算法

    递归 任何一个方法既可以调用其他方法又可以调用自己,而当这个方法调用自己时,我们就叫它递归函数或者递归方法! 通常递归有两个特点: 1.递归方法一直会调用自己直到某些条件满足,也就是说一定要有出口; ...

  2. jquery学习总结1-12

    一.jquery入口函数的几种写法 1.$(document).ready(function()  { } ) ; 2.jquery(document).ready(function()  { } ) ...

  3. 2019.03.29 NOIP训练 友好国度(点分治+容斥)

    传送门 思路: 直接上点分治+容斥计算每个因数对应的贡献即可. 代码: #include<bits/stdc++.h> #define ri register int using name ...

  4. .gvfs: Permission denied

    命令行输入umount .gvfs rm -rf .gvfs

  5. Maven搭建SSH框架

    工具:Eclipse(Maven管理工具)+Tomcat+Mysql. 1.新建一个Maven工程(maven-archetype-webapp). 打开File ——>new——>Mav ...

  6. ExtJS中listener方法和handler方法的区别

    listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...

  7. java.exe

    进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程(例:FlashGet):就是进程中一个独立的控制单元.线程在控制着进程的执行.一个进程中 ...

  8. Java 线程池(ThreadPoolExecutor)原理解析

    在我们的开发中“池”的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 有关java线程技术文章还可以推荐阅读:<关于java多线程w ...

  9. 了解iOS消息推送一文就够:史上最全iOS Push技术详解

    本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...

  10. 吴恩达机器学习笔记26-样本和直观理解1(Examples and Intuitions I)

    从本质上讲,神经网络能够通过学习得出其自身的一系列特征.在普通的逻辑回归中,我们被限制为使用数据中的原始特征