[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 then
print("一样")
else
print("不一样")
end

调用的C#脚本新增内容

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

运行结果

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

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

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 do
print("array[" .. i .. "] = " .. student.array[i])
end --使用迭代器遍历
local iter = student.array:GetEnumerator()
while iter:MoveNext() do
print("iter:" .. iter.Current)
end --转成table再遍历
local aTable = student.array:ToTable()
for j=1,#aTable do
print("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)

运行结果:

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

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

  1. uLua学习之读取外部Lua脚本(四)

    前言 上节说到了Lua脚本与unity3d中C#脚本的数据交互,但是我感觉上节中的数理方式不太好,因为我们是把Lua脚本以字符串形式粘贴到C#脚本中的,如果读取配置数据都这样做的话,那就太可怕了.想想 ...

  2. VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表

    原文:VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表 Excel具有强大的图表显示.分析功能,这点毋庸置疑,但是如果将常规MIS系统中的数据以报表的形式在Excel中显示,却并不那 ...

  3. VSTO学习笔记(八)向 Word 2010 中写入表结构

    原文:VSTO学习笔记(八)向 Word 2010 中写入表结构 前几天公司在做CMMI 3级认证,需要提交一系列的Word文档,其中有一种文档要求添加公司几个系统的数据库中的表结构.我临时接到了这项 ...

  4. VSTO学习笔记(四)从SharePoint 2010中下载文件

    原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...

  5. Lua的热更新学习笔记_01

    热更新的的实现方式 1.使用lua脚本编写游戏的UI或者其他的逻辑 2.使用C#的反射技术 3.使用C#Light AssetBundle是什么? 1.unity提供一个资源更新技术,就是通过Asse ...

  6. Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

    在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此 ...

  7. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  8. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

  9. lua脚本在游戏中的应用

    为什么要在游戏中使用脚本语言? 要解释这个问题首先我们先来了解一下脚本语言的特性: 学习门槛低,快速上手 开发成本低,可维护性强 动态语言,灵活性高 相对于C/C++这类高复杂性.高风险的编译型语言来 ...

  10. Cocos2d-js 热更新学习笔记

    转载至: http://blog.csdn.net/pt_xxj/article/details/68927705 为什么还要再写一篇关于cocos2d js热更新的笔记,最单纯的想法就是记录心得,另 ...

随机推荐

  1. 基于文件语义实现S3接口语义的注意事项

    本文标题中提到的文件语义,指的是POSIX规范. S3指的是AWS提供的对象存储服务以及相关接口.为方便描述,下文中以对象语义替代S3接口语义. 文件语义和对象语义存在比较多的差异. 对象语义不支持文 ...

  2. OpenHarmony littlefs文件系统存储结构与IO性能优化分析

    引言 随着科技的发展和网络技术的进步,计算机存储空间愈加紧张,存储空间对文件系统的功能需求越来越大,大规模的数据增长为文件存储.非结构化数据存储提出了新的挑战. 对于许多物联网设备而言,拥有一个小型且 ...

  3. HarmonyOS创作激励计划启动:助力技术创作突破边界

      即日起推出HarmonyOS创作激励计划,成功投稿并入选的文章将在HarmonyOS开发者公众号上线,9大技术社区同步宣发,不仅有丰厚稿酬,还有机会赢取创作奖品! 活动时间 即日起-2024年12 ...

  4. Python-List内部实现

    Python有很大实现的版本,像拿C语言实现的Cpython,以及在其基础上改进其解释执行变为即时编译(jit)的Pypy,还有一些其他的比如Jpython等.具体来说 其中使用c语言开发的叫做pyt ...

  5. SpringCloud整体架构概览

    什么是SpringCloud #目标 协调任何服务,简化分布式系统开发. #简介 构建分布式系统不应该是复杂的,SpringCloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性 ...

  6. linux 性能自我学习 ———— 关于内存 [七]

    前言 内存的基本知识,将在操作系统篇中详细介绍,这里只说明如何排查问题. 正文 内存的分配和回收: 在malloc 是c 标准库中的内存分配函数,对应到系统调用上,有两种实现方式,一种是brk()和 ...

  7. 重新点亮linux 命令树————网络管理[十一二]

    前言 简单整理一下网络管理. 正文 网络管理需要掌握: 网络状态查看 网络配置 路由命令 网络故障排除 网络服务管理 常用网络配置文件 网络状态的查看: 1.net-tools ---->1.i ...

  8. 混合app 解决常见bug弹出键盘返回出现闪屏

    前言 在我们开发混合app中,我们会发现一个问题,那就是比如我们正在输入信息的时候,然后我们按导航的返回键返回,因为切页面和回收键盘是同时的,给人一种闪屏的感觉,那么怎么解决呢? 方案 以ionic为 ...

  9. ddddocr基本使用和介绍

    ddddocr基本使用和介绍 摘要:在使用爬虫登录网站的时候,经常输入用户名和密码后会遇到验证码,这时候就需要用到今天给大家介绍的python第三方库ddddocr,ddddocr是一款强大的通用开源 ...

  10. vscode使用npm安装依赖报错

    1.报错信息 npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Node\node_cache_cacache\index-v5\4 ...