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

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

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

https://github.com/jarjin/LuaFramework_UGUI_V2

这个地址的是UGUI的。

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


首先点击Lua->Clear wrap files,清除所有wrap文件。


然后点击LuaFramework->Build Windows Resource,打包ab资源。


最后点击Lua->Generate All,重新生成wrap文件。

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


经过调试之后发现是ParticleSystem该类生成wrap文件时出现的问题。


所以把这行注释掉,重新操作一下就可以了。

然后点击运行。


直到这里,我们的项目总算是跑起来了。

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


在运行之前我们可以看到,场景中只有一个GameManager挂载了一个Main脚本,顾名思义,该脚本就是入口脚本。


游戏一开始,调用一个StartUp函数。


在StartUp当中又去调用了一个SendMessageCommand。


该函数调用了m_controller的ExecuteCommand方法。


这个m_controller是一个单例,当Facade被构造的时候创建的,而我们入口脚本当中的AppFacade类又是继承自Facade的。我们看到,当Facade类构造时,会调用InitFramework方法。


所以当AppFacade构造时,就注册了一个StartUp的类型。


将该枚举对应的类型注册进字典。

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


我们上面注册的时候,该枚举对应的类型是StartUpCommand。

 

看到他的Execute方法。

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


他是怎么添加的呢,实际上这些管理器都是继承自Monobehaviour的,其实就是添加这些组件到GameManager对象上并存进字典当中。那么既然是Monobehaiour,那么这些管理器就肯定都有生命周期函数。我们先看到GameManager。


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


OnInitialize这个方法,LuaManager.DoFile("Logic/Game");  这句代码,加载Logic文件夹下的Game这个lua文件。这个Game文件可以说是Lua脚本的入口脚本了。可以看到上面的代码,它调用了Game脚本的OnInitOK函数来驱动lua脚本。


OnInitOK该函数中,他去初始化一些View脚本和Ctrl脚本,这里就可以看出来,其实Tolua是采用MVC思想的。

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

那么视图层脚本的代码就可以使用了。反正Game这个脚本就是一个lua的入口脚本,具体大家要怎么做都可以。就是这么个流程。本篇就先讲这么多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/155947.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统一机器人描述格式——URDF

URDF(Unified Robot Description Format,统一机器人描述格式)是ROS中一个非常重要的机器人模型描述格式,ROS同时也提供URDF文件的C解析器,可以解析URDF文件中使用XML格式描述的机器人模型。 在使用URDF文件构建机器人模…

Centos8 openjdk升级

1、卸载旧版本 sudo dnf remove java-1.8.0-openjdk 2、搜索新版本 yum search java-11-openjdk3、安装新版本 dnf install java-11-openjdk.x86_644、验证新版本 java -version

光纤激光切割机如何高效的切割铜等高反材料

高反射材料的切割过程往往具有挑战性,对于许多光纤激光切割设备厂商而言都是难以解决的问题。但是作为铜、铝、金等常见的高反射性材料又需要在日常生产中经常进行加工处理。 很多厂家解决的办法之一就是采用相应的辅助气体。在光纤激光切割机切割铜时,辅…

【智慧燃气】智慧燃气解决方案总体概述--终端层、网络层

关键词:智慧燃气、智慧燃气系统、智慧燃气平台、智慧燃气解决方案、智慧燃气应用、智能燃气 智慧燃气解决方案是基于物联网、大数据、云计算、移动互联网等先进技术,结合燃气行业特征,通过智能设备全面感知企业生产、环境、状态等信息的全方…

【机器学习 | 回归问题】超越直线:释放多项式回归的潜力 —— 详解线性回归与非线性 (含详细案例、源码)

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

【前端小技巧】如何使用 Eolink Apilkit 调用 Mock ?

在开发过程中,进度比较赶的情况下,前端人员当页面写完时,后台的接口还没写完,等要交付的时候后端才把接口给你,这个时候就很尴尬。 这个时候 Mock 就可以很好的解决这个问题,前端团队可以在 API 还没开发完…

SAP内部转移价格(利润中心转移价格)的条件

SAP内部转移价格(利润中心转移价格) SAP内部转移价格(利润中心转移价格) SAP内部转移价格(利润中心转移价格)这个听了很多人说过,但是利润中心转移定价需要具备什么条件。没有找到具体的文档。…

应用在自动跟随行李箱领域中的国产蓝牙芯片

自动行走行李箱,又名“蓝牙行李箱”,是一种全自动的机械化行李箱。将三个蓝牙信号感应装置安装在一个特制的行李箱里面,这些装置接收到智能手机发出的蓝牙信号后,可通过一个计算机微处理器控制安装在行李下方的履带移动。自动行走…

深度学习基础知识 学习率调度器的用法解析

深度学习基础知识 学习率调度器的用法解析 1、自定义学习率调度器**:**torch.optim.lr_scheduler.LambdaLR2、正儿八经的模型搭建流程以及学习率调度器的使用设置 1、自定义学习率调度器**:**torch.optim.lr_scheduler.LambdaLR 实验代码: i…

精益生产与MES生产管理系统相互融合

近年来,精益生产理念在企业管理中越来越受欢迎。它强调以最小的浪费,在最短的时间内,生产出高质量的产品。这一理念的实施手段包括准时制生产方式、适时生产方式等,消除浪费、看板、快换工装等都是精益提高的工具方针。 然而&…

公网环境下如何内网穿透读写本地群晖NAS文件?

File Station 是 群晖Synology NAS 的集中化文件管理工具。我们可以在局域网内登陆nas web界面通过 File Station管理群晖nas中的文件,如果我们在户外,有读写家中群晖nas中文件的需求怎么办? 本教程解决的问题是: 人在户外&#…

常见的Web安全漏洞(2021年9月的OWASP TOP 10)

聊Web安全漏洞,就不得不提到OWASP TOP10。开放式Web应用程序安全项目(OpenWeb Application Security Project,OWASP)是一个开源的、非营利的组织,主要提供有关Web应用程序的实际可行、公正透明、有社会效益的信息&…

标题:协同云办公:打破传统模式,提升工作效率!

随着科技的迅速发展,传统办公模式已经难以满足现代企业的需求。为了提高工作效率和协作能力,越来越多的企业开始采用协同云办公。协同云办公通过云计算、大数据等技术,打破了传统办公模式的束缚,为企业带来了前所未有的便捷与高效…

Unity基础课程之物理引擎8-扔保龄球游戏案例(完)

三个脚本: 1.给求添加力 2.分数管理器 3.检测是否发生碰撞 ----------------------------------------------- 脚本源码 1.给求添加力 using System.Collections; using System.Collections.Generic; using UnityEngine;public class RoleControl : MonoBeha…

易点易动设备管理系统:打通采购管理的智能化设备管理解决方案

在现代企业的运营中,设备管理是一个关键的环节。传统的设备管理方法往往效率低下,导致设备故障频发、巡检和维修工作不协调,备件管理不规范。为了解决这些问题,我们引入了易点易动设备管理系统,它能够全面管理设备的生…

DataPath实现渐变效果

Android的vector矢量图很好用,可以画出保证清晰度的任意图形。但是Android Nougat之前的VectorDrawable不支持渐变色,如果要使用渐变色就要使用png图片或者自定义GradientDrawable。这么明显的不足,肯定是要修补上呀,API 24中的Ve…

应对优秀解决方案推荐

验证码是保护网站免受自动化 的重要工具,但同时也给实现自动化任务带来一定的困扰。本文将为您介绍如何应对验证码识别难题,并推荐一些优秀的解决方案,帮助您在实际操作中应对验证码识别问题。 1. 验证码识别难题 验证码识别是指将网站上的…

STM32 PA15/JTDI 用作普通IO,烧录口不能使用问题解决

我们一般用SW调试接口 所以DEBUG选择Serial Wire 这样PA15可以用作普通IO使用。 工程中默认加上: PA13(JTMS/SWDIO).ModeSerial_Wire PA13(JTMS/SWDIO).SignalDEBUG_JTMS-SWDIO PA14(JTCK/SWCLK).ModeSerial_Wire PA14(JTCK/SWCLK).SignalDEBUG_JTCK-SWCLK

xshell 上传下载文件命令

Windows 和 Linux上传或下载某个文件首先你的 Linux上需要安装安装 lrzsz工具包在Linux 上执行 yum install lrzsz 上传文件: 输入 rz 下载文件:运行命令 sz zcly.tar.gz (zcly.tar.gz)为文件名称

【css拾遗】粘性布局实现有滚动条的情况下,按钮固定在页面底部展示

效果&#xff1a; 滚动条滚动过程中&#xff0c;按钮的位置位于手机的底部 滚动条滚到底部时&#xff0c;按钮的位置正常 这个position:sticky真的好用&#xff0c;我原先的想法是利用滚动条滚动事件去控制&#xff0c;没想到css就可以解决 <template><view class…