热更学习笔记--toLau中lua脚本对C#中枚举和数组的访问

news/2024/10/6 0:09:32

[8]Lua脚本调用C#中的枚举学习

--调用枚举类型
print("----------------------toLua中调用C#中枚举类型-------------------------")
PrimitiveType = UnityEngine.PrimitiveType
local cubeObj = GameObject.CreatePrimitive(PrimitiveType.Cube)
--使用自定义枚举
local tc = TestScripts.OUTSTANDING_STUDENTS.TonyChang
print("优秀学生代表----" .. tostring(tc) .. "排名" .. tc:ToInt())
local fl = TestScripts.OUTSTANDING_STUDENTS.IntToEnum(2)
print("数值转枚举" .. tostring(fl))print("枚举值一样二者可以判等吗?")local us =  TestScripts.OUTSTANDING_STUDENTS.UrusWong
local us2 = TestScripts.OUTSTANDING_STUDENTS.UrusWong
if us == us2 thenprint("一样")
elseprint("不一样")
end

调用的C#脚本新增内容

#region 枚举//在TestScripts命名空间下新增枚举类型public enum OUTSTANDING_STUDENTS{TonyChang,UrusWong,FrankLee,JackChow}#endregion

运行结果

image-20240515230826214

[9]Lua脚本中调用C#中的数组

调用的C#脚本新增内容:

image-20240515235259197

Lua脚本中访问数组:

因为Array数组是在前文中的测试脚本TestScripts.Student类中声明创建的,所以开头先实例化Student对象。

使用Lua访问C#中数组时,可以通过层级结构获取到对应类的数组索引,按照C#中array数据结构类型来访问,

注意索引最大值,可以通过迭代器遍历访问,也可以将其转换为lua中的table,再遍历访问。

最后我们尝试再Lua中使用C#的array数组结构来创建使用数组

local student = TestScripts.Student("tony")
print("----------------------访问C#中数组--------------------")
print("array的长度" .. student.array.Length)
print("array[0]=".. tostring(student.array[0]))
print("5 在array中的索引是" .. tostring(student.array:IndexOf(5)))--按照C#中array数组长度进行遍历访问
--所以长度要减一 才为最后一个索引
for i = 1, student.array.Length - 1 doprint("array[" .. i .. "] = " .. student.array[i])    
end--使用迭代器遍历
local iter = student.array:GetEnumerator()
while iter:MoveNext() doprint("iter:" .. iter.Current)
end--转成table再遍历
local aTable = student.array:ToTable()
for j=1,#aTable doprint("aTable: " .. tostring(aTable[j]))
end --在lua中使用C#中的Array创建数组
--奇葩
local createArray = System.Array.CreateInstance(typeof(System.Int32), 10)
print("createArray.Length = " .. createArray.Length)
local createArray = System.Array.CreateInstance(typeof(System.Int32), 10)
createArray[0] = 9999
print("createArray[0] = " .. createArray[0])
print("createArray" .. createArray)

运行结果:

image-20240515235136442

注意:本两次在CustomSetting中新增的类型,之后重新生成wrap文件,在lua中才可以正常使用到。总之,使用toLua获取C#脚本中内容,则需要将脚本添加自定文件,并生成wrap文件。

img

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【postcss-px-to-viewport】屏幕适配

背景 有的时候我们本地开发的时候使用的px为单位,但是我们想要使用vw单位,这样可以在不同的屏幕下自动伸缩元素的大小进而达到自适应 解决方案 使用postcss-px-to-viewport第三方插件。 原理:它主要用于将 CSS 文件中的 px 单位转换为 vw/vh 单位,以便实现响应式布局。然而…

docker 构建自己的镜像

docker镜像仓库的镜像,很多时候不能满足我们的使用。比如,需要一个安装了redis、swoole、mongodb、pdo扩展的php7.4版本的扩展,从哪里获取呢?这时候,就能用到今天这篇文档了。 docker 可以通过Dockerfile文件,来构建自己的专属镜像。那么,究竟怎么操作呢?# 基础镜像选择…

墨刀原型设计工具分析

一、墨刀工具简介 墨刀是一款在线原型设计与协同工具,它允许产品经理、设计师、开发、销售、运营及创业者等用户群体构建产品原型,演示项目效果,并进行团队协作。墨刀的设计理念是为用户提供一个简单易用的工具,以便快速上手并开始原型设计。二、墨刀的主要特点 1易于上手:…

5.9-15护网常考漏洞

1、中间件漏洞态势感知(SA):situation awareness 2、常见软件服务漏洞 shiro550和721漏洞区别; java框架,4a认证,认证授权会话加密。 登录后有个remember me选项,记住会话,验证时先看remember me 选项是否勾选 ;若勾选,将用户身份序列化,再AES加密,之后base64编码…

矩阵位移法大作业监工日记

5/15 新建文件夹,先做好前期结构数据化的手写性梳理,写一点变量的定义,感觉有很多重复的信息,但是懒得精简了。 编写输入文件in.txt,和直接用const差不多,感觉不如直接程序内打表,因为后面结构数据化的时候还是直接存的信息,泛用化水平进一步降低。1 /* 矩阵位移法大作…

原创-CommonsCollections1-DefaultMap链

今天我打算整点儿不一样的内容,通过之前学习的TransformerMap和LazyMap链,想搞点不一样的,所以我关注了另外一条链DefaultedMap链,主要调用链为: 调用链详细描述:ObjectInputStream.readObject()DefaultedMap.readObject()DefaultedMap.get()ChainedTransformer.transfor…

Idefics2 简介: 为社区而生的强大 8B 视觉语言模型

我们很高兴在此发布 Idefics2,这是一个通用的多模态模型,接受任意文本序列和图像序列作为输入,并据此生成文本。它可用于回答图像相关的问题、描述视觉内容、基于多幅图像创作故事、从文档中提取信息以及执行基本的算术运算。 Idefics2 由 Idefics1 改进而得,其参数量为 8B…

文件处理命令

目录1.sort命令--对行内容进行升序排序2.uniq命令--对连续的重复行进行去重3.tr命令--对输入的内容进行替换(1)删除空行(2) Windows的另起一行格式(\r\n)转换成Linux的另起一行格式(\n)(3)对数组排序4.cut命令--对行内容进行字段截取5.split命令--linux下将一个大的文件拆…