Unity——Tolua框架笔记
一、准备阶段
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框架笔记相关推荐
- Unity热更新ToLua框架学习
一.Lua语言学习 二.ToLua框架 三.使用ToLua框架对Lua&C#进行交互 四.使用Lua对GameObj进行操作 五.将游戏对象打包&解包 六.将Lua脚本文件进行打包&a ...
- Unity游戏框架学习笔记——03基于观察者模式的事件中心
Unity游戏框架学习笔记--03基于观察者模式的事件中心 基于观察者模式的事件中心 一如既往指路牌:https://www.bilibili.com/video/BV1C441117wU?p=5. ...
- Unity 之 ToLua框架中UI.Dropdown组件动态添加Options
前言 最近使用ToLua框架使用Unity中的Dropdown组件,其他属性都还好和在C#中使用的形式差不多,只是修改成了Lua的语法习惯就可以了,但是我有个需求,是要需要实现动态添加Dropdown ...
- ET框架笔记 (笑览世界写)(转)
客户端 1.使用unity2017.2.0版本及以上2018版以下,编译原始版ET客户端报没有引用错误时,删除hoxfit下引用的UnityEngine.dll和UnityEngine.UI.dll, ...
- Unity 游戏框架搭建 (七) 减少加班利器-QApp类
本来这周想介绍一些框架中自认为比较好用的小工具的,但是发现很多小工具都依赖一个类----App. App类的职责: 1.接收Unity的生命周期事件. 2.做为游戏的入口. 3.一些框架级别的组件初始 ...
- Unity 游戏框架搭建 (九) 减少加班利器-QConsole
为毛要实现这个工具? 在我小时候,每当游戏在真机运行时,我们看到的日志是这样的. 没高亮啊,还有乱七八糟的堆栈信息,好干扰日志查看,好影响心情. 还有就是必须始终连着usb线啊,我想要想躺着测试... ...
- Unity tolua问题记录
文章目录 1.导入包后类名有与原文件重复的怎么办? 2.Scene 'LuaUIScene' couldn't be loaded because it has not been added to t ...
- Unity DOTS 学习笔记1 - ECS 0.50介绍和安装
Unity DOTS 学习笔记1 - ECS 0.50介绍和安装 为什么学习这个技术 ECS的全称为Entity Component System,是最早由暴雪在GDC2017上提出的一个新的游戏设计 ...
- ET 框架笔记【转载】
ET框架笔记 (笑览世界写)(转) 客户端 1.使用unity2017.2.0版本及以上2018版以下,编译原始版ET客户端报没有引用错误时,删除hoxfit下引用的UnityEngine.dll和U ...
最新文章
- ***杂记-2013-07-12
- nginx关于域名解析的源码分析
- php self this parent
- 如何在 Linux 中使用 find
- [Qt教程] 第27篇 XML(一)使用DOM读取XML文档
- [html] 页面上如何显示特殊字符?
- phpcmsV9 数据库配置文件(查找、修改)
- Redis中的管道有什么用?
- [BZOJ1934/Luogu2057][SHOI2007]Vote 善意的投票 题解
- 算法资料:算法导论_原书第3版(中文)(PDF带书签)
- 宝塔实测-电商ERP进销存系统源码
- 几款优秀的Windows密码抓取工具
- Pycharm Debug调试(纯干货)
- Mutual Supervision for Dense Object Detection(ICCV2021)阅读笔记
- 小爱控制HA上的开关(红外线)
- 《机器学习与数据挖掘》实验五 编程实现误差逆传播算法(BP算法)
- 推特正式起诉马斯克 要求强制其按原协议完成收购
- js处理json数组
- 网站盈利模式分析分类——别人的网站是怎么赚钱的!
- PKI 公钥基础设施原理与应用
热门文章
- html中default是什么文件,Default是什么文件夹?Default文件夹可以删除吗?
- 会议平板功能详解-同屏-白板-视频会议-扫码投票
- 苹果手机字体大小怎么设置?简单实用,轻松学会
- vscode 添加用户代码片段(快速生成 vue 模板)
- jenkins下载地址deb包
- 新型激光辨识算法助力机器人逃离死胡同
- MATLAB--数字图像处理 车牌识别之简易识别程序
- 重庆邮电大学计算机硕士录取,2018年重庆邮电大学硕士研究生复试录取工作方案_计算机考研复试...
- 【RPLIDAR】ubuntu18.04安装cartographer源码并使用RPLIDAR A2M8 - R4建图
- 点击网页上的联系我们弹出QQ对话框的实现