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))
相关推荐
其实防守也摸鱼几秒前
软件安全与漏洞--实验 软件安全设计
开发语言·网络·python·安全·软件安全·实验·软件安全设计
asdfg12589631 分钟前
无用空数组的用法:numberList.toArray(new Integer[0])
java·开发语言
likerhood5 分钟前
认识 JVM:Java 程序背后的那台“隐形计算机”
java·开发语言·jvm
wangchunting5 分钟前
Java9功能更新说明
java·开发语言
~|Bernard|5 分钟前
三,go语言中channel的底层原理
开发语言·后端·golang
likerhood8 分钟前
Java 反射与注解的详细讲解
java·开发语言·数据库
asdfg12589639 分钟前
从Java的设计模式看接口和实现---List与ArrayList
java·开发语言·设计模式·面向对象·面向接口
云深麋鹿13 分钟前
C++ | map&set的使用
开发语言·c++
allnlei14 分钟前
gRPC C++ Callback API(Reactor 模式)介绍
开发语言·c++
Eiceblue14 分钟前
锁定单元格 :C# 控制 Excel 单元格编辑权限
开发语言·c#·excel