一、准备阶段

1、下载LuaFramework_UGUI,LuaFramework_UGUI_V2

2、解压项目LuaFramework_UGUI,用Unity打开,操作完成下图然后选择LuaFramework-->Build xxx Resource,运行即可

二、框架说明

以上为项目结构图。

1、Editor:主要有两个文件。CustomSettings主要是将C#的Class和Action等委托注册,生成Wrap文件,供Lua调用,实现Lua和C#的交互;Packager主要用来生成Assetbundle包,需要在其中添加好打包文件名、文件格式、文件路径等配置。

2、Examples:框架实例,存放实例的预设和资源,Packager中设置的打包路径就在这里。

3、Lua:3rd是一些第三方库和例子;Common是一些全局属性、方法的定义;Controller是预设Panel的逻辑代码;Logic是全局的管理文件;View是预设Panel的UI组件和定义和获取,供Controller的使用。Lua文件夹下也有一些文件,Lua入口文件Main.lua和event广播相关文件(不过这个不推荐用,不好维护吧)

4、Resources:存防音视频等资源

5、Scenes:场景(根据这个框架,一个项目有一个场景就可以了,之后不同的页面仅是更换预设Panel就可以了)

6、Scripts:C#代码,主要实现AB包的加载和下载、资源的加载等

7、ToLua:蒙哥写的ToLua热更新框架代码,用于C#和Lua交互

8、Plugins:插件,一般存放第三方库,比如安卓和IOS的库,微信登陆、定位等第三方库。

9、StreamingAssets:Build xxx Resource生成的AB都在这里,这里的文件就是我们可以热更新的文件。只要将这部分文件放置到服务器让客户端下载更新即可。

三、通过以上各文件夹的说明,我们了解了框架的组成。现在大致说下框架的执行过程:

1、首先运行项目,显示的是Scene的内容,这部分是固定的,不能热更,主要显示项目名称或公司名称吧

2、运行Scene时,同时会执行挂载在Scene上的脚本

3、脚本执行开始会先将AB包复制到项目目录下,然后从服务器下载files.txt(AB包目录,含有AB包名字及其MD5)

4、根据MD5判断该AB包是否需要更新,是则从服务器下载AB包替换到项目目录下,这就是热更新。

5、当复制完最新的AB包后,开始创建Lua虚拟机,打开Lua入口Main.lua,然后执行Game.lua进入应用开始界面

6、进入应用开始界面(如登陆或大厅),这时主要就是预设Panel的更换,主要执行Lua代码(当然会跟C#交互)

7、预设Panel的创建是在Controller的xxxCtrl.lua中调用的,预设的命名和lua文件的命名是有固定格式的,参考PanelMannager,都是以xxxPanel结束的,然后在Lua/View下创建对应的xxxPanel.lua和在Lua/Controller下创建对应的xxxCtrl.lua。通过学习Lua编程我们知道,要在一个lua文件中使用另一个lua文件是需要先require的,框架在这方面进行统一的require,当然你也可以分开,有时候分开相对来说更好,这个主要根据自己的情况决定,框架统一在define.lua和CtrlManager.lua中引用,define.lua主要是所列xxxPanel.lua和xxxCtrl.lua的key,然后在Game.lua中统一引用xxxPanel.lua,这是使用须知的。

8、在Lua中使用C#或者Unity的类是需要完整引用的(namespace+className)、AddComponent(typeof(namespace+className))动态挂载脚本需要注意下,当然如果是Unity的组件可以这样写:AddComponent("Button"),这些写法都需要先将这些类在CustomSettings中注册并Build出Wrap文件才能用。

四、StreamingAssets服务器配置

参考我之前写的文章。

通过以上的配置可以将本机当作服务器实现热更功能,要使用热更功能需要在Scripts/ConstDefine/AppConst中修改其中的配置。

1、UpdateMode:true表示启动热更模式,需要配置WebUrl(AB包的服务器地址)

2、LuaBundleMode:true表示将资源和lua代码打包成AB包,false主要用于调试,避免每次修改lua代码都要打包

3、WebUrl:AB包的服务器地址

4、每次修改C#代码都需要重新编译Wrap文件

5、本人修改后的框架,只保留主要的部分,其他的删了。

五、注意

遇到一个问题:打开a界面,关闭a界面,再打开a界面,这时可能会出现图片丢失显示不出来的情况,主要是框架在关闭界面时会进行资源释放,所以大神们一般会自己写一套资源管理,但我们这些小角色只要把这个资源释放代码注释掉就可以了。当然这个只是蠢办法,能力不够只能这样子了。

六、分包加载

首先我们需要对各类资源进行分类,需要统一下载的分为一类,以此类别作为分包加载的标志。

Unity——Tolua框架笔记相关推荐

  1. Unity热更新ToLua框架学习

    一.Lua语言学习 二.ToLua框架 三.使用ToLua框架对Lua&C#进行交互 四.使用Lua对GameObj进行操作 五.将游戏对象打包&解包 六.将Lua脚本文件进行打包&a ...

  2. Unity游戏框架学习笔记——03基于观察者模式的事件中心

    Unity游戏框架学习笔记--03基于观察者模式的事件中心 基于观察者模式的事件中心 一如既往指路牌:https://www.bilibili.com/video/BV1C441117wU?p=5. ...

  3. Unity 之 ToLua框架中UI.Dropdown组件动态添加Options

    前言 最近使用ToLua框架使用Unity中的Dropdown组件,其他属性都还好和在C#中使用的形式差不多,只是修改成了Lua的语法习惯就可以了,但是我有个需求,是要需要实现动态添加Dropdown ...

  4. ET框架笔记 (笑览世界写)(转)

    客户端 1.使用unity2017.2.0版本及以上2018版以下,编译原始版ET客户端报没有引用错误时,删除hoxfit下引用的UnityEngine.dll和UnityEngine.UI.dll, ...

  5. Unity 游戏框架搭建 (七) 减少加班利器-QApp类

    本来这周想介绍一些框架中自认为比较好用的小工具的,但是发现很多小工具都依赖一个类----App. App类的职责: 1.接收Unity的生命周期事件. 2.做为游戏的入口. 3.一些框架级别的组件初始 ...

  6. Unity 游戏框架搭建 (九) 减少加班利器-QConsole

    为毛要实现这个工具? 在我小时候,每当游戏在真机运行时,我们看到的日志是这样的. 没高亮啊,还有乱七八糟的堆栈信息,好干扰日志查看,好影响心情. 还有就是必须始终连着usb线啊,我想要想躺着测试... ...

  7. Unity tolua问题记录

    文章目录 1.导入包后类名有与原文件重复的怎么办? 2.Scene 'LuaUIScene' couldn't be loaded because it has not been added to t ...

  8. Unity DOTS 学习笔记1 - ECS 0.50介绍和安装

    Unity DOTS 学习笔记1 - ECS 0.50介绍和安装 为什么学习这个技术 ECS的全称为Entity Component System,是最早由暴雪在GDC2017上提出的一个新的游戏设计 ...

  9. ET 框架笔记【转载】

    ET框架笔记 (笑览世界写)(转) 客户端 1.使用unity2017.2.0版本及以上2018版以下,编译原始版ET客户端报没有引用错误时,删除hoxfit下引用的UnityEngine.dll和U ...

最新文章

  1. ***杂记-2013-07-12
  2. nginx关于域名解析的源码分析
  3. php self this parent
  4. 如何在 Linux 中使用 find
  5. [Qt教程] 第27篇 XML(一)使用DOM读取XML文档
  6. [html] 页面上如何显示特殊字符?
  7. phpcmsV9 数据库配置文件(查找、修改)
  8. Redis中的管道有什么用?
  9. [BZOJ1934/Luogu2057][SHOI2007]Vote 善意的投票 题解
  10. 算法资料:算法导论_原书第3版(中文)(PDF带书签)
  11. 宝塔实测-电商ERP进销存系统源码
  12. 几款优秀的Windows密码抓取工具
  13. Pycharm Debug调试(纯干货)
  14. Mutual Supervision for Dense Object Detection(ICCV2021)阅读笔记
  15. 小爱控制HA上的开关(红外线)
  16. 《机器学习与数据挖掘》实验五 编程实现误差逆传播算法(BP算法)
  17. 推特正式起诉马斯克 要求强制其按原协议完成收购
  18. js处理json数组
  19. 网站盈利模式分析分类——别人的网站是怎么赚钱的!
  20. PKI 公钥基础设施原理与应用

热门文章

  1. html中default是什么文件,Default是什么文件夹?Default文件夹可以删除吗?
  2. 会议平板功能详解-同屏-白板-视频会议-扫码投票
  3. 苹果手机字体大小怎么设置?简单实用,轻松学会
  4. vscode 添加用户代码片段(快速生成 vue 模板)
  5. jenkins下载地址deb包
  6. 新型激光辨识算法助力机器人逃离死胡同
  7. MATLAB--数字图像处理 车牌识别之简易识别程序
  8. 重庆邮电大学计算机硕士录取,2018年重庆邮电大学硕士研究生复试录取工作方案_计算机考研复试...
  9. 【RPLIDAR】ubuntu18.04安装cartographer源码并使用RPLIDAR A2M8 - R4建图
  10. 点击网页上的联系我们弹出QQ对话框的实现