Unity3D学习之Lua热更新解决方案(二)XLua

文章目录

  • 1 XLua概述
  • 2 xLua导入和AB包相关准备
  • 3 C#调用Lua
    • 3.1 Lua解析器
    • 3.2 文件加载重定向
    • 3.3 Lua解析器管理器
      • 3.3.1 重定向AB包内的Lua
      • 3.3.2 获得_G大表
    • 3.4 全局变量的获取
    • 3.5 全局函数的获取
      • 3.5.1 无参无返回
      • 3.5.2 有参有返回
      • 3.5.3 多返回值
      • 3.5.4 变长参数
    • 3.6 List和Dictionary映射table
      • 3.6.1 同一类型List
      • 3.6.2 不指定类型List
      • 3.6.3 指定类型的Dic
      • 3.6.4 不指定类型的Dic
    • 3.7 类映射table
      • 3.7.1 类中的类
    • 3.8 接口映射table
    • 3.9 LuaTable映射table
  • 4 Lua使用C#类
    • 4.1 在Main函数中调用Lua脚本
    • 4.2 调用类
      • 4.2.1 调用C#类
    • 4.3 自定义类
    • 4.4 继承了MONO的类
  • 5 Lua使用C#枚举
    • 5.1 自带枚举
    • 5.2 自定义枚举
  • 6 Lua使用C#数组、list、Dictionary
    • 6.1 数组
    • 6.2 List
    • 6.3 Dictionary
    • 6.4 Lua使用C#拓展方法
  • 7 Lua使用C# ref和out函数
    • 7.1 Ref
    • 7.2 Out
    • 7.3 ref和out
  • 8 Lua使用C#重载函数
  • 9 Lua使用C#委托和事件
    • 9.1 委托
    • 9.2 事件
  • 10 Lua使用C#二维数组
  • 11 Lua使用C#的null和nil比较
  • 12 Lua和系统类及委托相互使用
  • 13 Lua使用C#协程
  • 14 Lua使用C#泛型函数


1 XLua概述

在这里插入图片描述

在资源服务器下载

在这里插入图片描述
下载完成后放入游戏客户端
在这里插入图片描述

2 xLua导入和AB包相关准备

Github 搜索 Xlua
在这里插入图片描述
在这里插入图片描述
拖入到unity项目中
在这里插入图片描述
导入AB包
在这里插入图片描述

3 C#调用Lua

3.1 Lua解析器

在这里插入图片描述

Require会自动调用resources文件夹的内容,但由于unity不能读取.lua后缀的文件
所以使用.txt的后缀
在这里插入图片描述
会在resources文件夹里被自动识别为
在这里插入图片描述

3.2 文件加载重定向

创建一个Lua文件夹,在里面放入后缀为.lua的文件
在这里插入图片描述

在这里插入图片描述
addLoader相当于加一个委托
在这里插入图片描述

在这里插入图片描述

3.3 Lua解析器管理器

在这里插入图片描述
添加函数进行调用XLua
初始化LuaEnv,加载Lua脚本重定向

在这里插入图片描述

在这里插入图片描述

3.3.1 重定向AB包内的Lua

AB包.lua不能识别,所以要把.lua改成txt
准备一个Lua包
在这里插入图片描述
创建加载指定ab包的函数

在init中新加委托
在这里插入图片描述
在这里插入图片描述
优化流程,和博客(一)中的ab包管理器联动
lua只能同步加载,不能异步加载

在这里插入图片描述
优化方法,让执行lua语句不需要加上require

在这里插入图片描述

3.3.2 获得_G大表

在这里插入图片描述

3.4 全局变量的获取

启动脚本Main,在Main中调用其他脚本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
通过c#无法获取本地变量

在这里插入图片描述

3.5 全局函数的获取

在这里插入图片描述

在这里插入图片描述

3.5.1 无参无返回

在这里插入图片描述

在这里插入图片描述

3.5.2 有参有返回

如果是自定义委托
在这里插入图片描述
需要生成脚本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他委托

在这里插入图片描述

3.5.3 多返回值

用out接
在这里插入图片描述

会返回第一个值,剩下的值使用 out接

在这里插入图片描述

在这里插入图片描述
用ref接
在这里插入图片描述
在这里插入图片描述

3.5.4 变长参数

在这里插入图片描述
在这里插入图片描述

3.6 List和Dictionary映射table

在这里插入图片描述

3.6.1 同一类型List

在这里插入图片描述

在这里插入图片描述

3.6.2 不指定类型List

在这里插入图片描述
在这里插入图片描述

3.6.3 指定类型的Dic

在这里插入图片描述

3.6.4 不指定类型的Dic

在这里插入图片描述

3.7 类映射table

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.7.1 类中的类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.8 接口映射table

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
如果用接口来接Get的内容,需要使用
在这里插入图片描述
然后编译
接口是引用拷贝

嵌套和类一样

3.9 LuaTable映射table

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 Lua使用C#类

4.1 在Main函数中调用Lua脚本

Lua没办法直接访问C# 一定从C# 调用Lua脚本后才把逻辑给Lua编写
在这里插入图片描述

4.2 调用类

4.2.1 调用C#类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 自定义类

在这里插入图片描述
在这里插入图片描述

4.4 继承了MONO的类

在这里插入图片描述
在这里插入图片描述

5 Lua使用C#枚举

5.1 自带枚举

在这里插入图片描述

5.2 自定义枚举

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6 Lua使用C#数组、list、Dictionary

6.1 数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2 List

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 Dictionary

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.4 Lua使用C#拓展方法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
建议在Lua中要使用的类都加上该特性 可以提升性能

7 Lua使用C# ref和out函数

7.1 Ref

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Ref函数不传完,默认补充为0

7.2 Out

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.3 ref和out

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8 Lua使用C#重载函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9 Lua使用C#委托和事件

9.1 委托

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

9.2 事件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10 Lua使用C#二维数组

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

11 Lua使用C#的null和nil比较

在这里插入图片描述
可以自己写一个公共方法
在这里插入图片描述
还可以在C# 中加扩展方法

在这里插入图片描述

在这里插入图片描述

12 Lua和系统类及委托相互使用

无法为系统类或者第三方库代码加上[CsharpCallLua] 和 [LuaCallCsharp]
在这里插入图片描述
会报错
会提示需要给委托加特性 [LuaCallCsharp]
在这里插入图片描述
然后生成xlua的代码
在这里插入图片描述
[LuaCallCSharp]也是一样的
在这里插入图片描述

13 Lua使用C#协程

在这里插入图片描述
调用 xlua.util 把Lua函数转成Coroutine
在这里插入图片描述
关闭线程
在这里插入图片描述

14 Lua使用C#泛型函数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

DFA还原白盒AES密钥

本期内容是关于某app模拟登录的,涉及的知识点比较多,有unidbg补环境及辅助还原算法,ida中的md5以及白盒aes,fart脱壳,frida反调试 本章所有样本及资料均上传到了123云盘 llb资料官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 目录 首先抓包 fart脱壳 加密位置定位…

运筹学_1.1.4 线性规划问题-解的概念

1.1.4 线性规划问题-解的概念 一、可行解与最优解二、基的概念三、基变量、基向量;非基变量、非基向量;基解、基可行解;四、最优解与可行解、基可行解的关系五、用例题(枚举法)巩固基解、基可行解、最优解三个概念1、例…

【JAVA】JDK内置工具之appletviewer

下载java 下载java的时候会先下载Java jdk,Java Development Kit Java开发工具包。 然后会下载jre,也就是Java Runtime Environment Java运行环境。什么是JDK、JRE?_java中的jdk,jre代表什么-CSDN博客 下载之后先找到java下的bin文件&#x…

element-plus 的el-img组件访问oss图片自动拼接前端地址

这是我的组件代码 <el-image style"width: 100px; height: 100px" :src"scope.row.logo" />访问时候 竟然凭借上了前端的地址端口 原来是我的oss服务是使用了域名做cdn加速的 内容分发网络&#xff08;CDN&#xff09;或者服务器配置&#xff0c;可…

【NDK系列】Android tombstone文件分析

文件位置 data/tombstone/tombstone_xx.txt 获取tombstone文件命令&#xff1a; adb shell cp /data/tombstones ./tombstones 触发时机 NDK程序在发生崩溃时&#xff0c;它会在路径/data/tombstones/下产生导致程序crash的文件tombstone_xx&#xff0c;记录了死亡了进程的…

【C++入门】缺省参数 | 函数重载

目录 4.缺省参数 4.1缺省参数的概念 4.2缺省参数分类 4.3声明和定义分离&#xff08;声明使用缺省参数&#xff09; 4.&#x1f40d;声明和定义分离到链接 5.函数重载 5.1函数重载的概念 5.2可执行程序的形成步骤 5.3C支持函数重载的原理—名字修饰(name Mangling) 4.…

180基于matlab的频率切片小波变换程序(FTWT)

基于matlab的频率切片小波变换程序&#xff08;FTWT&#xff09;。从一种新的角度出发&#xff0c;通过自由选择频率切片函数、引进新尺度参数&#xff0c;在频率域实现小波变换&#xff0c;该变换能够很好地刻画信号各成分之间的相对能量关系。此外&#xff0c;频率切片小波变…

YOLOv9有效提点|加入SGE、Ge、Global Context、GAM等几十种注意力机制(四)

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文只有代码及注意力模块简介&#xff0c;YOLOv9中的添加教程&#xff1a;可以看这篇文章。 YOLOv9有效提点|加入SE、CBAM、ECA、SimA…

超强预测算法:XGBoost预测模型

目录 往期精彩内容&#xff1a; 多变量特征序列、单序列数据预测实战 前言 1 风速数据预处理与数据集制作 1.1 导入数据 1.2 多变量数据预处理与数据集制作 1.3 单序列数据预处理与数据集制作 2超强模型XGBoost——原理介绍 3 模型评估和对比 3.1 随机森林预测模型 3…

蓝桥杯Java B组历年真题(2013年-2021年)

一、2013年真题 1、世纪末的星期 使用日期类判断就行&#xff0c;这里使用LocalDate&#xff0c;也可以使用Calendar类 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:无需package // 2: 类名必须Main, 不可修改p…

重生奇迹mu魔法师用什么技能刷怪

1、在重生奇迹mu中&#xff0c;魔法师刷怪可采用多种技能。其中&#xff0c;火球术、冰箭术、雷电术、火墙术、冰咆哮术等单体伤害技能较为常用&#xff0c;可以快速消灭单个怪物。 2、同时&#xff0c;群体伤害技能如流星雨、冰风暴、雷霆一击等也可在多个怪物间快速切换&…

MVCC及其原理

1. MVCC概述及其原理 多版本并发控制&#xff08;MVCC&#xff0c;Multi-Version Concurrency Control&#xff09;是一种数据库管理技术&#xff0c;用于提高数据库系统在多用户环境中的并发性能&#xff0c;同时保证事务的隔离性&#xff0c;避免了不必要的锁定。MVCC允许在…