Unity ToLua热更框架使用教程(1)

这篇具有很好参考价值的文章主要介绍了Unity ToLua热更框架使用教程(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从本篇开始将为大家讲解ToLua在unity当中的使用教程。

Tolua的框架叫LuaFramework,首先附上下载链接:

https://github.com/jarjin/LuaFramework_UGUI_V2

这个地址的是UGUI的。

下载完之后导入项目,首先,我们要先让这个项目跑起来。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
首先点击Lua->Clear wrap files,清除所有wrap文件。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
然后点击LuaFramework->Build Windows Resource,打包ab资源。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
最后点击Lua->Generate All,重新生成wrap文件。

但是在我这里生成Wrap文件时出现了一个报错。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
经过调试之后发现是ParticleSystem该类生成wrap文件时出现的问题。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
所以把这行注释掉,重新操作一下就可以了。

然后点击运行。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
直到这里,我们的项目总算是跑起来了。

接下来,我们来看一下这个框架是如何运行的。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
在运行之前我们可以看到,场景中只有一个GameManager挂载了一个Main脚本,顾名思义,该脚本就是入口脚本。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
游戏一开始,调用一个StartUp函数。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
在StartUp当中又去调用了一个SendMessageCommand。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
该函数调用了m_controller的ExecuteCommand方法。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
这个m_controller是一个单例,当Facade被构造的时候创建的,而我们入口脚本当中的AppFacade类又是继承自Facade的。我们看到,当Facade类构造时,会调用InitFramework方法。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
所以当AppFacade构造时,就注册了一个StartUp的类型。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
将该枚举对应的类型注册进字典。

我们上面调用了m_controller的ExecuteCommand,我们可以看到,这个ExecuteCommand函数就是根据传进来的枚举去获取对应的类型,然后使用Activator.CreateInstance(commandType)去创建一个这种类型的实例,并且调用它的Execute方法。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
我们上面注册的时候,该枚举对应的类型是StartUpCommand。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎 

看到他的Execute方法。

这里添加了很多个管理器。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
他是怎么添加的呢,实际上这些管理器都是继承自Monobehaviour的,其实就是添加这些组件到GameManager对象上并存进字典当中。那么既然是Monobehaiour,那么这些管理器就肯定都有生命周期函数。我们先看到GameManager。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
在Awake当中调用了初始化方法Init。然后释放资源。然后热更新,对比files文件等等一系列的操作,大家可以顺着往下看,代码太长不截图了,最后我们会看到他执行到了这个方法。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
OnInitialize这个方法,LuaManager.DoFile("Logic/Game");  这句代码,加载Logic文件夹下的Game这个lua文件。这个Game文件可以说是Lua脚本的入口脚本了。可以看到上面的代码,它调用了Game脚本的OnInitOK函数来驱动lua脚本。

Unity ToLua热更框架使用教程(1),unity教程,unity,游戏引擎
OnInitOK该函数中,他去初始化一些View脚本和Ctrl脚本,这里就可以看出来,其实Tolua是采用MVC思想的。

看到InitViewPanels方法,他去加载PanelNames表的所有脚本。其实就是加载View文件夹下的视图层脚本。

那么视图层脚本的代码就可以使用了。反正Game这个脚本就是一个lua的入口脚本,具体大家要怎么做都可以。就是这么个流程。本篇就先讲这么多。文章来源地址https://www.toymoban.com/news/detail-723804.html

到了这里,关于Unity ToLua热更框架使用教程(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity 框架】QFramework v1.0 使用指南 工具篇:13. 其他事件工具 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏

    QFramework 除了支持了 TypeEventSystem、EasyEvent 还支持了 EnumEventSystem、StringEventSystem。 EnumEventSystem 前身是 老版本 QFramework 的 QEventSystem StringEventSystem 的前身是,老版本的 MsgDispatcher TypeEventSystem: 事件体定义简洁 比较适合用于设计框架 支持 struct 获得较好内存性能 使用反射,CPU

    2023年04月17日
    浏览(61)
  • 【Unity 框架】QFramework v1.0 使用指南 架构篇:03. 引入 Command | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏

    我们回顾一下目前的代码,如下; 现在,数据共享的问题通过 引入 Model 解决了。 这里再次强调一下,需要共享的数据放 Model 里,不需要共享的,能不放就不放。 虽然引入了 Model,但是这套代码随着项目规模的发展还是有很多的问题。 其中最严重也最常见的就是 Controller

    2024年02月06日
    浏览(68)
  • [Unity实战][C#实战]HybridCLR(wolong)卧龙C#热更框架v2.0.x-Unity2020.3.21f1

    官网介绍 HybridCLR(代号wolong)是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。 HybridCLR扩充了il2cpp的代码,使它由纯AOT (opens new window)runtime变成‘AOT+Interpreter’ 混合runtime,进而原生支持动态加载assembly,使得基于il2cpp backend打包的游戏不仅能在

    2024年02月15日
    浏览(43)
  • 【Unity 框架】QFramework v1.0 使用指南 工具篇:05. ResKit 资源管理&开发解决方案 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏

    Res Kit,是资源管理快速开发解决方案 特性如下: 可以使用一个 API 从 dataPath、Resources、StreammingAssetPath、PersistentDataPath、网络等地方加载资源。 基于引用计数,简化资源加载和卸载。 拥抱游戏开发流程中的不同阶段 开发阶段不用打 AB 直接从 dataPath 加载。 测试阶段支持只需打

    2024年02月01日
    浏览(63)
  • 【Unity使用addressables制作资源热更+实时动态热更基本记录】

    一、Addressables基础操作教程 1、下载Addressables插件 点击菜单Window / Package Manager,打开插件包管理界面,搜索addressables Addressables的打包方式其实也是AssetBundle格式,只是在此基础上做了一层封装,方便进行管理(比如打包、加载、依赖等)。而我们知道,没有加密的AssetBundle是

    2024年02月10日
    浏览(37)
  • Unity使用TextMeshPro多字体和材质热更

    最近Unity项目中使用到TextMeshPro做聊天,需要支持部分字体带描边,部分字体不带描边。想到的决解方案是:TextMeshPro支持多字体展示(具体可以查看组件的官方案例Link Example),就做了两个字体一个是带描边的一个是不带描边的。 但是有个问题是多出来的一个字体需要放在

    2024年02月16日
    浏览(60)
  • 【Unity2022】Unity多人游戏开发教程-Netcode for GameObjects-使用命令行启动多人游戏

    首先亮出文档,可以直接去看官方文档。 本文章大部分内容来源于官方文档,另一部分为笔者讲解的教程。 如果英语不好,或看不懂文档的人,可以阅读本文章。 官方文档 官方文档的中文翻译: 中文翻译 本教程使用的开发环境如下: Windows10 Unity 2022.3.0f1c1 Netcode for GameOb

    2024年02月08日
    浏览(60)
  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(79)
  • Unity、UE、Cocos游戏开发引擎的区别

    Unity、Unreal Engine(UE)和Cocos引擎是三个常用的游戏开发引擎,它们在功能和特性上有一些区别。以下是它们之间的主要区别: 编程语言:Unity使用C#作为主要的编程语言,开发者可以使用C#脚本进行游戏逻辑编写。Unreal Engine主要使用C++作为编程语言,但也支持蓝图系统,允许

    2024年02月22日
    浏览(66)
  • Unity vs Godot :哪个游戏引擎更适合你?

    游戏引擎的选择对开发过程和最终产品质量有着重大影响。近年来,Godot和Unity这两款引擎受到广泛关注。本文将从多个维度对两者进行比较,以期为开发者提供正确的选择建议。 Godot和Unity都有各自的优势,没有绝对的好坏之分。Godot开源免费,上手简单,更适合2D和小型游戏

    2024年01月23日
    浏览(98)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包