首页 > 编程知识 正文

unity lua框架,unity 框架

时间:2023-05-06 07:18:03 阅读:229914 作者:3989

一、准备阶段

1、下载LuaFramework_UGUI,LuaFramework_UGUI_V2

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

二、框架说明

以上为项目结构图。

1、伶俐的大象:主要有两个文件。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界面,这时可能会出现图片丢失显示不出来的情况,主要是框架在关闭界面时会进行资源释放,所以大神们一般会自己写一套资源管理,但我们这些小角色只要把这个资源释放代码注释掉就可以了。当然这个只是蠢办法,能力不够只能这样子了。

六、分包加载

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。