Lua调用C#协程

核心就是先require("xlua.util")

然后就可以通过cs_generator函数将方法传入

例如:mono:StartCoroutine(util.cs_generator(fun))

Lua 复制代码
print("*********Lua调用C# 协程相关知识点***********")
--xlua提供的一个工具表
--一定是要通过require调用之后 才能用
util = require("xlua.util")
--C#中协程启动都是通过继承了Mono的类 通过里面的启动函数StartCoroutine

GameObject = CS.UnityEngine.GameObject
WaitForSeconds = CS.UnityEngine.WaitForSeconds
--在场景中新建一个空物体  然后挂一个脚本上去 脚本继承mono使用它来开启协程
local obj = GameObject("Coroutine")
local mono = obj:AddComponent(typeof(CS.LuaCallCSharp))

--希望用来被开启的协程函数 
fun = function()
	local a = 1
	while true do
		--lua中 不能直接使用 C#中的 yield return 
		--就使用lua中的协程返回
		coroutine.yield(WaitForSeconds(1))
		print(a)
		a = a + 1
		if a > 10 then
			--停止协程和C#当中一样
			mono:StopCoroutine(b)
		end
	end
end
--我们不能直接将 lua函数传入到开启协程中!!!!!
--如果要把lua函数当做协程函数传入
--必须 先调用 xlua.util中的cs_generator(lua函数)
b = mono:StartCoroutine(util.cs_generator(fun))
相关推荐
散峰而望1 分钟前
C语言刷题-编程(一)(基础)
c语言·开发语言·编辑器
Dxxyyyy4 分钟前
零基础学JAVA--Day27(注释+异常+异常处理方法)
java·开发语言
好望角雾眠12 分钟前
第四阶段C#通讯开发-5:TCP
网络·笔记·网络协议·tcp/ip·c#
InCerry36 分钟前
.NET周刊【11月第1期 2025-11-02】
c#·.net周报·.net周刊
视图猿人39 分钟前
RxJS基本使用及在next.js中使用的例子
开发语言·javascript
墨雪不会编程44 分钟前
C++的基础语法篇一 ——命名空间
开发语言·c++
墨客希1 小时前
安装 awscli
开发语言
天天进步20151 小时前
Python全栈项目:结合Puppeteer和AI模型操作浏览器
开发语言·人工智能·python
唐僧洗头爱飘柔95271 小时前
【GORM(3)】Go的跨时代ORM框架!—— 数据库连接、配置参数;本文从0开始教会如何配置GORM的数据库
开发语言·数据库·后端·golang·gorm·orm框架·dsn
Jonathan Star2 小时前
在 Go 语言中,模板字符串
开发语言·后端·golang