找回密码
 立即注册
查看: 193|回复: 0

Unity——Tolua框架笔记

[复制链接]
发表于 2021-8-12 11:29 | 显示全部楼层 |阅读模式
一、准备阶段

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开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 06:33 , Processed in 0.125228 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表