zoukankan      html  css  js  c++  java
  • 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基础知识  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,还须要一个步骤,生成对应的资源文件,

    对应的。假设你要切换平台的话,这里的文件你也须要删除,先看下生成之后是什么样子

    把这些文件删除了就可以。

    3:点击执行程序

    这是此框架给的Demo,并且还有serverSocket监听button点击事件。这里的server是在下载文件中,与Assets同级文件夹Server,打开

    ~SimpleFramework_UGUI-masterServerServerinDebugSuperSocket.SocketService.exe文件


    输入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、实例源代码文件,比方:cjsonpbcpbluasproto等。

     

     ---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脚本,以PromptCtrlPromptPanel脚本为例

     

    咱们自己写的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文件,改动例如以下

     

    生成的资源文件就是UnityStreamingAssets目录下的内容

     

    然后生成apk。安装到手机就可以

     

    好了,看下怎样生成资源文件

    这里的资源文件前面也说了,须要打包的资源设置了AssetBundleName,生成的资源文件存储在StreamingAssets目录下,直接拷贝StreamingAssets目录下全部文件到自己webserver就可以。

    当然。下载这些文件须要有些扩展名权限,比如

    好了。累成狗了。假设有什么能够交流探讨的,能够加我QQ503115254

     

    转载请注明出处。


  • 相关阅读:
    activity
    笔记
    创建敌人基类
    让精灵改变方向并前进
    给敌人精灵创建帧动画
    每帧创建一个item
    lua -- 所有UI组件的基类
    lua -- 系统提示框
    lua -- 生成协议
    ES6,数组遍历
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7137371.html
Copyright © 2011-2022 走看看