LuaFrameWork学习----1

现在的游戏都需要热更新,从现在开始学习lua的toLua框架来实现热跟新。
废话不说,俗话说得好磨刀不误砍柴工,要使用lua语言,就需要一个好的编辑器,现在网上常用的编辑器有一下几中:

  1. Subline3编辑器,就是向写text文本一样,只是有语法高亮和写过的代码提示

    网址:http://www.sublimetext.com/3(英文版),也可下载中文版
    
  2. LuaStudio:一种有断点,有智能提示,但是就是收费的,网上也要破解的

        百度盘:http://pan.baidu.com/s/1eRV4dyU 密码:29il
    
  3. 就是使用VS自带的插件BabeLua ,不过需要配置过程比较麻烦,但是相比Subline3有更多的提示

    百度盘:http://pan.baidu.com/s/1slMA1jR 密码:tfbm(支持VS2015)
    
  4. IntelliJ IDEA + EmmyLua,这种编辑器也是相对十分方便的,不过我用的不多

        提供一个链接使用教程:http://blog.csdn.net/david_dai_1108/article/details/74279111
    

    编辑器基本上也就是这几种了,其他的我也没用过。

言归正传:既然要使用ToLua做热更新,首先需要下载LuaFramework框架 https://github.com/jarjin/LuaFramework_UGUI(下载地址)
  1. 创建一个新的场景,创建一个空游戏对象,命名为GameObject,挂在Main脚本
    图片1

  2. 找到AppConst脚本,修改一下设置
    这里写图片描述

  3. 找到PanelManager,将UI面板的父节点修改为Canvas,因为框架自带的例子的父节点是GuiCamera,我的例子的父节点是画布,所以要根据自己的需求修改

    这里写图片描述

  4. 制作一个微信登录的界面,做成一个prefab,放在下面的文件夹中
    这里写图片描述

  5. 打开Packager脚本,找到HandleExampleBundle() 方法,打包资源
    这里写图片描述

  6. 将LuaFramework中的Lua文件夹添加到subLine3中,创建StartCtrl.lua

    require("View/StartPanel")--导入开始的view视图模块
    StartCtrl={}
    local this = StartCtrl
    local transform
    local startPanelObj
    
    function StartCtrl.New()
        log("构造了一个startCtrl对象")
        return this;
    end
    
    function StartCtrl.Awake()
        panelMgr:CreatePanel('Start',this.OnCreate);--调用C#的PanelManager中的CreatePanel方法,传入(面板的名字,【不带panel(自动添加)】,回调函数)
    end
    
    function StartCtrl.OnCreate(obj)--回调函数
        startPanelObj=obj;
        luaBehaviour=startPanelObj:GetComponent('LuaBehaviour')--因为在创建房间时候,自动挂在LuaBehaviour脚本
        luaBehaviour:AddClick(StartPanel.weChatBtn,this.OnWeChatClick);--调用LuaBehaviour中的AddClick,添加监听事件参数(指定的按钮,回调)
    end
    
    function StartCtrl.OnWeChatClick()
        StartPanel.messageText="你好我是高昂";
    end
    
  7. StartPanel.lua脚本

    StartPanel={}
    local this=StartPanel
    local gameobject
    local transform
    
    function StartPanel.Awake( obj )
        gameobject=obj;
        transform=obj.transform;
    end
    
    function StartPanel.Start()
        this.weChatBtn=transform.find('WeChatBtn'):GetComponent('Button');
        this.messageText=transform.find('Message/Text'):GetComponent('Text');
    end
    
    function StartPanel.OnDestroy()
        log("开始面板view执行")
    end
    
自动生成绑定代码文件,非反射调用 大量内建基础类型支持,如枚举,委托,事件,Type, 数组,迭代器等 支持多种协同形式 支持所有unity内部类导出,支持委托类型导出 支持导出自定义,跳过某个空的基类,修改导出名称等 支持扩展函数自定义导出, 比如DoTween 支持值类型Nullable导出,包括Nullable等 支持Lua中function转委托,可以区分需要不同委托的参数的重载函数 支持c# LuaFunction对象转委托,简化调用方式。 支持无GC的多参数调用形式 支持重载函数自动折叠, 如:Convert.ToUInt32只导出double参数的函数 支持重载函数自动排序, 如:参数个数相同, object参数执行级最低, 不会出现错误匹配情况 支持导出函数重命名, 可以分离导出某个重载函数(可以导出被折叠掉的函数) 支持使用编辑器类改写导出规则 支持this数组访问,索引为int可以通过[]访问,其他可使用.get_Item或者.this:get()访问数组成员 支持委托(事件)+-lua function。支持通过函数接口的Add和Remove委托操作 支持静态反射操作, 形式同c# 支持peer表,可在lua端扩展导出的userdata 支持自定义struct压入和读取,做到无GC,并且结构成员无类型限制, 参考例子24 支持preloading, 可以通过requie后绑定wrap文件 支持int64, uint64 大量的lua数学类型,如Quaternion, Vector3, Mathf等 包含第三方lua扩展,包括luasocket, struct, lpeg, utf8, pb等库 当lua出现异常,能够同时捕获c#端和lua端堆栈,便于调试 print信息,在编辑器点击日志, 能自动打开对应lua文件 支持unity所有版本 支持Lua hook C#相代码实现,一定程度上支持利用Lua代码修改C#端代码的bug(暖更新使用说明)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值