print("******* Coroutine *******")
-- 协程:协同程序
-- print("******* 协程的创建 *******")
-- 常用方式:coroutine.create() —— 返回线程对象
fun = function ()
print("123")
end
co = coroutine.create(fun)
--[[
等效于
co = coroutine.create(function ()
print("123")
end)
]]
-- 协程的本质是一个线程对象
print(co)
print(type(co))
-- coroutine.wrap(f) —— 返回函数对象
co2 = coroutine.wrap(fun)
print(co2)
print(type(co2))
-- print("******* 协程的运行 *******")
-- 第一种方式,对应的 是通过 create 创建的协程
coroutine.resume(co)
-- 第二种方式
co2()
-- print("******* 协程的挂起 *******")
fun2 = function ()
local i = 1
while true do
print(i)
i = i + 1
-- 协程的挂起函数
coroutine.yield()
end
end
co3 = coroutine.create(fun2)
-- 只输出一次,因为 resume 只启动一次函数,挂起后不再执行,与C#不同
coroutine.resume(co3)
-- 但是如果多次执行协程,会继续在上一次挂起的后面代码执行
coroutine.resume(co3)
co4 = coroutine.wrap(fun2)
co4()
co4()
Lua-- 协程
本文深入探讨 Lua 中的协程概念,详细解释其工作原理和在 Unity 开发中的应用,帮助开发者理解如何利用协程优化游戏逻辑和提高性能。
摘要由CSDN通过智能技术生成