ulua+PureMVC框架简单热更新使用

转载 2015年11月21日 13:33:45

ulua+PureMVC框架简单热更新使用


(原文转自http://blog.csdn.net/adambieber/article/details/47402805)

前言:

1:作者官网论坛

首先介绍的是这个框架是一位大牛  骏擎【CP】  jarjin   写的,据说原本是“很多人不知道怎么使用Ulua,所以搞了个演示Demo”,但是这个初衷发生了变化,突然有一个天作者发现很多人基于这个Demo去做游戏了,这出乎作者的意料。在此希望这个框架会越来越好。目前为止这个框架是完全免费的。

官网地址:http://www.ulua.org/

最近刚刚开了一个论坛,大家不懂的可以去看看,论坛地址:http://bbs.ulua.org/

2:关键词解释

Lua:先看下百度百科里面对lua的解释:http://baike.baidu.com/link?url=NkoserYmDEvJUz4RA-Dny3h6NP9oCW7--MPfnuO4NsvF3647QEopcYBwxHvBqzXemZuDjiFEcGkUbJ4mr0Camq

看完之后就大概对lua有了一个理解了,简单来说就是用来热更新。ulua是其中的一个版本。

PureMVC:这是简单小型的MVC框架,具体请看百度百科:http://baike.baidu.com/link?url=3KyH_hz5ZY6WOVCZZTjd8FtCckkxSFa320jF8HivQhVuDQv_RDY6U95HxmyJDNyb7CTMVRDbHyRcpGPWhwZ1s_

 这个框架里面都集成了。这里只介绍此框架与Unity之间的结合使用。

3:准备资源:

 框架下载地址:http://www.ulua.org/simpleframework.html 下载Simple Framework Github地址选项中的 SimpleFramework UGUI 选项。

 4:基础知识:

ulua/cstolua使用基础:http://bbs.ulua.org/dispbbs.asp?boardid=2&Id=27

SimpleFramework NGUI/UGUI基础知识  http://bbs.ulua.org/dispbbs.asp?boardid=3&Id=24

 正文:

该工程基于Unity 5.0 + UGUI + cstolua构建

服务器端基于VS2012及其以上版本。

如果低于版本要求的话,可能会出现问题

 

下载完毕后用Unity打开此工程文件,

 

目录结构如下:

  

1:打开login场景后,有一个比较容易出问题的地方,你是以什么终端运行的就要切换相应的平台,如果当中切换平台,需要注意一些文件的删除和重新生成。

以Android为例子:切换Android平台

点击Gen Lua Wrap Files生成相应lua基本脚本,打开Assets/uLua/Source/LuaWrap目录,你可以看到生成的一些文件,是不是这些文件的名称是否眼熟。

 

如果要切换平台,首先需要把这些LuaWarp删除掉

然后选择相应的平台,选择好之后再重复上面的步骤生成Wrap文件

2:想要运行这个demo,还需要一个步骤,生成相应的资源文件,

相应的,如果你要切换平台的话,这里的文件你也需要删除,先看下生成之后是什么样子

把这些文件删除了即可。

3:点击运行程序

这是此框架给的Demo,而且还有服务器Socket监听按钮点击事件。这里的服务器是在下载文件里,与Assets同级目录Server,打开

~\SimpleFramework_UGUI-master\Server\Server\bin\Debug\SuperSocket.SocketService.exe文件


输入r就开启socket服务器了,我在这里热更新使用的web服务器,会在后面介绍到,这里仅仅是演示demo中的服务器

 

服务器启动之后,回到Unity重新启动游戏(先启动服务器再启动客户端)

 

点击Button按钮就会收到来自服务器端的信息

看下服务器端

收到了客户端的信息。

 

4:先来简单介绍ulua脚本之间的关系

 在项目的根目录下的Lua文件夹下几乎都是lua脚本,当热更新的时候这些都需要生成出来,然后放置到web服务器端供更新,关于更新的具体细节在论坛里面有介绍:http://bbs.ulua.org/dispbbs.asp?boardid=3&Id=24

 

 Lua:框架自带的Lua源码目录,用户自定义的Lua脚本也就是放在这里面,最后打包的时候,打包脚本会将其按目录结构生成到StreaminAssets目录里面去,然后在将其上传到游戏的Web服务器上面,用于准备被每个游戏客户端下载更新他们本地的Lua脚本。达到热更目的。

 

 ---3rd:里面是第三方的一些插件lua、实例源码文件,比如:cjson、pbc、pblua、sproto等。

 

 ---Common:公用的lua文件目录,如define.lua文件,一些变量声明,全局配置等,functions.lua常用函数库,通讯的protocal.lua协议文件。

 

 ---Controller:控制器目录,它不依赖于某一个Lua面板,它是独立存活在Luavm中的一个操作类,操作数据、控制面板显示而已。

 

 ---Logic:目录里面存放的是一些管理器类,比如GameManager游戏管理器、NetworkManager网络管理器,如果你有新的管理器可以放到里面。

 

 ---System:这个目录是cstolua的系统目录,里面存放都是一些常用的lua类,为了优化lua调用速度,用lua重写的unity常用类。

 

 ---View:这是面板的视图层,里面都是一些被Unity调用的面板的变量,走的是Unity GameObject的生命周期的事件调用。

 

 

5:先来看看demo中的lua脚本,以PromptCtrl和PromptPanel脚本为例

 

咱们自己写的lua脚本可以以这两个脚本为模板

可以看到这里面的写法类似于javaScript,这是由于在Lua文件夹下集成了一些方法,这样写起来比较方便。

如果我们自己写,需要注意修改以下几个文件

例如自定义AdamCtrl放置于Controller文件夹下,按照模板构建自己的lua脚本, 打开define.lua脚本,为CtrlName添加AdamCtrl

打开CtrlManager.lua,添加如下

打开GameManager.lua脚本,修改如下

有的时候需要Panel文件,有的时候不需要,看自己需求所定

 

到这里,基本上lua就差不多了,这是创建一个新的lua如何加入到框架中,现在看看如何进行热更新。

 

6:发布可以热更新的apk

首先把平台转换为Android平台,重新生成Wrap File的文件,把StreamingAssets文件夹整个的删掉,这里热更新更新的是demo中的例子,界面上显示出来东西,就说明已经热更新出来了。这里要涉及到打包资源的问题,打包的资源需要设置AssetBundleName才可以自动打包,例如Assets/Examples/Builds/Prompt/PromptPanel.prefab进行打包,

不过咱们现在不需要打包,先把StreamingAssets文件夹整个删掉。

打开Scripts/ConstDefine/AppConst.cs文件,修改如下

 

生成的资源文件就是Unity下StreamingAssets文件夹下的内容

 

然后生成apk,安装到手机即可

 

好了,看下如何生成资源文件

这里的资源文件前面也说了,需要打包的资源设置了AssetBundleName,生成的资源文件存储在StreamingAssets文件夹下,直接拷贝StreamingAssets文件夹下所有文件到自己web服务器即可。当然,下载这些文件需要有些扩展名权限,例如


Android常用的热更新技术框架调研

一.基础知识 1.阿里的热更新框架已经开源 了。但已经很久没有更新过新版本了。当前的版本只支持到了 Android 4.4。由于 5.0 起新的 ART 虚拟机、更严格的 SELinux 策略以及...
  • u010963246
  • u010963246
  • 2016年07月22日 15:36
  • 9091

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

ulua+PureMVC框架简单热更新使用 前言: 1:作者官网论坛 首先介绍的是这个框架是一位大牛  骏擎【CP】  jarjin   写的,据说原本是“很多人不知道怎么使用Ulua,所以搞了个演...
  • AdamBieber
  • AdamBieber
  • 2015年08月10日 18:50
  • 13785

Unity热更新专题(九)Unity热更新实例

Unity热更新专题(九)Unity热更新实例 经过前面的学习。我们已经知道了用uLua进行Unity热更新的大概方法了。现在我们通过一个实例,来实现Unity热更新。 我们在这里仿照上一节进行U...
  • husheng0
  • husheng0
  • 2015年09月20日 19:07
  • 3402

android热插件,热更新,热修复,模块化

应用层开发,有一段时间是谈native色变,把原生app开发者干了,用那个js来写应用,经过市场沉淀,人们也理智了。见过最过分的,两万元每月招RN工程师,做创业项目。真叫一个狠!     去年火起来...
  • u011216417
  • u011216417
  • 2017年06月09日 23:16
  • 1847

Unity3D资源热更新(一)

先撸一个资源热更新出来:感觉网上新版打包的东西太少了,很多人找了半天还是找的5.0以前的,现在Vinici基于Unity5.4弄了一个例子供参考,也防止自己以后忘了。...
  • fcc7927752836
  • fcc7927752836
  • 2016年12月26日 20:57
  • 691

ToLua LuaFramework 使用实战[1]-代码热更新

ToLua LuaFramework 使用实战[1]-代码热更新 感谢原文作者@罗培羽,本文会根据最新框架版本做一些修改。 一、代码热更新 1.1、安装框架 只要在http://www.ulua.o...
  • guofeng526
  • guofeng526
  • 2017年04月03日 20:11
  • 1422

热更新Tinker的集成使用

初衷:如今热更新越来越火,各大厂也陆续开源自己的热更新框架。目前主流的热更新大概有以下一些,未统计到的望给予补充。 正好年底了有点时间,也总结一下。 1、Tinker 微信  2、QZone  QQ...
  • mapgoo
  • mapgoo
  • 2017年01月13日 11:50
  • 1583

Android热更新实现原理

最近Android社区的氛围很不错嘛,连续放出一系列的Android动态加载插件和热更新库,这篇文章就来介绍一下Android中实现热更新的原理。ClassLoader我们知道Java在运行时加载对应...
  • lzyzsd
  • lzyzsd
  • 2015年11月15日 01:31
  • 49711

Unity dll 热更新 基础框架

昨晚上有了dll 热更新的想法,今天做了一天的实验,也遇到些坑,这里总结下 工作环境: U3D5.3.2 + vs2010 +mono 下面要模拟的是一个登陆环境,点击按钮,就加载一个iGameObj...
  • pdw_jsp
  • pdw_jsp
  • 2016年02月19日 16:42
  • 4537

Unity官方公布热更新方案性能对比

孙广东  2016.3.11    Unity应用的iOS热更新作者:丁治宇Unity TechnologiesChina Agenda•  什么是热更新•  为何要热更新•  如何在iOS 上对Un...
  • u010019717
  • u010019717
  • 2016年03月11日 09:48
  • 9511
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ulua+PureMVC框架简单热更新使用
举报原因:
原因补充:

(最多只允许输入30个字)