Lua热更学习--使用toLua中的协程

news/2024/9/27 12:18:30

[6] C#访问调table类中的成员变量和函数

访问table中的变量和函数

lua中可以使用table作为class,因此对table中的函数访问调用是必要的根据前面对table访问和function的获取调用,这里尝试获取调用。

依然是如此,此种调用方式获取到的table中的函数是引用拷贝。

Main.lua脚本新增内容

CStudent = {_name = "TonyChang",_id = "202499990101",_sex = "male",CStudent = function()print("table中的函数")end
}  

测试脚本中的调用内容:

//--------------------------------获取类类型table
LuaTable CStudent = CallLuaManager.Instance().LuaState.GetTable("CStudent");
//执行构造函数
CStudent.GetLuaFunction("CStudent").Call("TonyChang","男");
//打印结果
Debug.Log(CStudent["_name"]+" ," + CStudent["_id"] +" ," +CStudent["_sex"]);

使用toLua中的协程

lua中不支持协程,使用toLua中提供的协程方式来使用协程。

在使用协程之前,需要在管理类中添加LuaLooper组件,并将其LuaState与外部使用执行的LuaState虚拟机绑定。

LuaLooper luaLooper = gameObject.AddComponent<LuaLooper>();
// Debug.Log(gameObject.name);
luaLooper.luaState = _luaState;

Main.lua中的协程:

--使用toLua中提供的协程
--制作计时器
function Timer()  local t = 1while t < 20 dot = t + 1coroutine.wait(1)print(t)endStopTimer()
end
local coroutlineTimer = nilfunction StartTimer()print("run")--开始协程时候传入类型为函数coroutlineTimer = coroutine.start(Timer)
endfunction StopTimer()--传入要结束的协程coroutine.stop(coroutlineTimer)
end

我们在C#测试脚本中开启协程:

 //----------------------------------开始计时器LuaFunction startTimer = CallLuaManager.Instance().LuaState.GetFunction("StartTimer");startTimer.Call();startTimer.Dispose();

image-20240512112431495

当然也可以传入参数设置计时时长:

image-20240512112758804

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

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

相关文章

consul部署

下载二进制包 下载地址:https://developer.hashicorp.com/consul/install https://releases.hashicorp.com/consul/1.18.1/consul_1.18.1_linux_amd64.zip下载解压wget https://releases.hashicorp.com/consul/1.18.1/consul_1.18.1_linux_amd64.zip [root@mcw12 mcw]# ls con…

TCP的四次挥手过程

TCP连接是双向传输的对等的模式(全双工模式),就是说双方都可以同时向对方发送或接收数据。而断开的时候,也是双方都可以主动断开,此时需要经过四次挥手的过程,流程如下图所示...TCP连接是双向传输的对等的模式(全双工模式),就是说双方都可以同时向对方发送或接收数据。…

Android开发Kotlin学习笔记

为了做《基于安卓定位的考勤系统》,学了一些杂乱的知识,在这里简单记录一下。除了在C#桌面应用开发中感性的体会到了些XML布局的知识以及课上学习的Java知识,其他也算是零基础了。 Google Android Developer的课程 2023/10/25 :跟着官方文档先快速入门一下基本内容。截至目…

SpringBoot速记

本篇以SpringBoot快速构建一个基础项目,在构建的同时记录相关的知识。常见的架构图: 其中, config中可以引入第三方的jar包 controller中存放控制类一个简单的例子如下: mapper中存放对数据库的操作接口 pojo中是实体对象类,常与数据表对应 service中存放服务类: xml中…

容器技术:优化软件测试流程的利器

前言 你是否曾想过,如何让你的应用程序在任何地方都能够运行,而无需担心各种环境的兼容性问题?之前,我们可能是想着用虚拟机,但是现在我们有了其他选择,不知道你是否听说过容器技术,乍一听却感到有些晦涩难懂?别担心,本文将为你揭开容器技术的神秘面纱,让你轻松理解这…

【攻防技术系列】-- Python沙箱逃逸

Python 是一种强大而灵活的编程语言,但在某些情况下,可能需要运行不受信任的代码,同时又希望限制它的行为,以防止对系统的不良影响。这时,Python 沙箱就成为一种有用的工具,它可以帮助你在安全的环境中运行不受信任的代码。本文将探讨 Python 沙箱的概念、常见的沙箱技术…

掌握 Playwright:元素操作技巧大揭秘

简介 在自动化测试和网页爬取中,与页面元素的交互是至关重要的。Playwright 提供了丰富的 API 来执行各种元素操作,包括点击、输入文本、获取属性等。在本文中,我们将介绍如何使用 Playwright 进行元素操作。 点击元素 点击页面元素是最常见的操作之一。Playwright 提供了 l…

实验4——代码审查

一、实验题目 :代码审查 二、实验目的1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查;2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容1、IDEA环境和PyCharm环境二选一;IDEA环境(1)预先准备在IDEA环境下实现对输入的…