Unity编程笔录--ulua+PureMVC框架简单热更新使用
ulua+PureMVC框架简单热更新使用
前言:
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基础知识 boardid=3&Id=24">http://bbs.ulua.org/dispbbs.asp?
boardid=3&Id=24
正文:
该project基于Unity 5.0 + UGUI + cstolua构建
server端基于VS2012及其以上版本号。
假设低于版本号要求的话。可能会出现故障
完成下载后用Unity打开此project文件,
文件夹结构例如以下:
1:打开login场景后,有一个比較easy出问题的地方。你是以什么终端执行的就要切换对应的平台。假设其中切换平台,须要注意一些文件的删除和又一次生成。
以Android为样例:切换Android平台
点击Gen Lua Wrap Files生成对应lua基本脚本,打开Assets/uLua/Source/LuaWrap文件夹,你能够看到生成的一些文件。是不是这些文件的名称是否眼熟。
假设要切换平台,首先须要把这些LuaWarp删除掉
然后选择对应的平台。选择好之后再反复上面的步骤生成Wrap文件
2:想要执行这个demo,还须要一个步骤,生成对应的资源文件,
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
对应的。假设你要切换平台的话,这里的文件你也须要删除,先看下生成之后是什么样子
把这些文件删除了就可以。
3:点击执行程序
这是此框架给的Demo,并且还有serverSocket监听button点击事件。这里的server是在下载文件中,与Assets同级文件夹Server,打开
~\SimpleFramework_UGUI-master\Server\Server\bin\Debug\SuperSocket.SocketService.exe文件
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
输入r就开启socketserver了,我在这里热更新使用的webserver,会在后面介绍到。这里不过演示demo中的server
server启动之后。回到Unity又一次启动游戏(先启动server再启动client)
点击Buttonbutton就会收到来自server端的信息
看下server端
收到了client的信息。
4:先来简介ulua脚本之间的关系
在项目的根文件夹下的Lua文件夹下差点儿都是lua脚本,当热更新的时候这些都须要生成出来,然后放置到webserver端供更新。关于更新的详细细节在论坛里面有介绍:http://bbs.ulua.org/dispbbs.asp?boardid=3&Id=24
Lua:框架自带的Lua源代码文件夹。用户自己定义的Lua脚本也就是放在这里面,最后打包的时候,打包脚本会将其按文件夹结构生成到StreaminAssets文件夹里面去。然后在将其上传到游戏的Webserver上面,用于准备被每一个游戏client下载更新他们本地的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,加入例如以下
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
打开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目录下全部文件到自己webserver就可以。
当然。下载这些文件须要有些扩展名权限,比如
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
好了。累成狗了。假设有什么能够交流探讨的,能够加我QQ:503115254
转载请注明出处。
Unity编程笔录--ulua+PureMVC框架简单热更新使用的更多相关文章
- 体验ToLua框架下热更新(Phpstudy)
一.关于热更新的详细流程 首先我们需要需要将本机电脑作为服务器打开,这是第一步 1.1.1如何确定我们的电脑是作为服务器打开的. 我们打开一个浏览器在地址栏中输入127.0.0.1.或者是localh ...
- 客户端热更新框架之UI热更框架设计(上)
什么是热更新,为什么需要热更新? 热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来 ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用FairyGUI (二)
上次讲解了FairyGUI的最简单的热更新办法,并对其中一个Demo进行了修改并做成了热更新的方式. 这次我们来一个更加复杂一些的情况:Emoji. FairyGUI的 Example 04 - ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 热更新Live2D
live2D是一个很强大的2D动画组件.我们可以使用AS3脚本对它进行热更新. live2D在Unity中的使用请看这里: 如何获取Live2D 总得来说,我们可以先去live2D官网下载它的Unit ...
- 客户端热更新框架之UI热更框架设计(下)
上一篇笔者介绍了关于什么是热更新,为什么需要热更新的技术文章.本篇就专门针对UI框架的热更新功能实现部分展开讨论,讨论的重点是热更新如何与UI框架进行结合? 现在笔者把设计“UI热更新框架”的整体设计 ...
- 深入理解xLua热更新原理
热更新简介 热更新是指在不需要重新编译打包游戏的情况下,在线更新游戏中的一些非核心代码和资源,比如活动运营和打补丁.热更新分为资源热更新和代码热更新两种,代码热更新实际上也是把代码当成资源的一种热更新 ...
- 出售一套Unity + Lua热更新框架代码
出售一套Unity + Lua的客户端框架代码,功能有资源管理.网络通信.配置文件解析.热更新.文件读写.Lua加密揭秘.UI框架.打包工具.编辑器工具等,已经在多个实际项目(已上线)中使用.代码优雅 ...
- Unity 3D中 Ulua-UGUI简单的Demo——热更新的具体流程、使用说明
Ulua热更新具体流程.使用说明 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 -- 未完 1 -- ...
- Tinker 热修复框架 简单上手教程
当你们看到Tinker的时候是不是有点愣逼这个是什么东西? 简单来说就是不需要重新下载app和重新安装app 来进行更新app的技术框架. 看看这个吧,我也是才学习 ,先做个学习记录 参考:Tinke ...
随机推荐
- Ubuntu 16.04安装Kate文本编辑工具
Kate支持很多语言,比如NASM,比SBL3低那么一点,但是比Gedit好. 安装: sudo apt-get install kate 启动: 额外配置: 1.安装Kwrite sudo apt- ...
- Concurrent control in SQLite
This document describes the technologies to concurrent access to a SQLite database. There are also s ...
- 北大ACM(POJ1018-Communication System)
Question:http://poj.org/problem?id=1018 问题点:枚举. Memory: 564K Time: 329MS Language: C++ Result: Accep ...
- Codeforces_768_D_(概率dp)
D. Jon and Orbs time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- JavaScript ES6 数组新方法 学习随笔
JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...
- HDU4496 D-City【基础并查集】
Problem Description Luxer is a really bad guy. He destroys everything he met. One day Luxer went to ...
- JDK的下载---官方
1.去到官方网站 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 根据箭头选择, ...
- 二: 安装centos服务环境软件mysql httpd php
安装mysql--------------------------------------wget http://dev.mysql.com/get/mysql-community-release-e ...
- 热词解析(9) — hangry
今天给大家介绍一个非常有趣.又超级实用的词!!中文叫"饿极而怒",英文叫... 不知道你有没有这样的经历,当你饿着肚子等着你妈做饭,结果你妈却在麻将桌上不下来,你就越来越饿,越饿越 ...
- circumferential averge streamwise velocity using Tecplot and Matlab
Input: results from solver output: circumferential averge physical quantities( such as streamwise ve ...