在Unity 中习惯了使用 Coroutine,发现 Lua中也有 Coroutine 可以使用,大喜。
Lua 中的 Coroutine 有四种状态 Suspend 、 Running 、Dead、 normal 。
下面代码解释了各个状态的时机
--------------------------get coroutine status--------------------------local co=coroutine.create(function( ) -- body print("hi")end)--coroutine type is threadprint(co,type(co))--coroutine is on suspend status after create (suspend/running/dead/normal)print(coroutine.status(co))--coroutine is on running status after resumelocal bret=coroutine.resume(co)--注意resume *** 作是有返回值的!!! 这里返回trueprint(bret)--coroutine is on dead status running endprint(coroutine.status(co))--对一个 已经是dead状态的coroutine进行resume是返回false的local bret=coroutine.resume(co)print(bret)--而且直接在print中进行resume还能打印出来详细错误print(coroutine.resume(co))----------------------test yIEld----------------------print("----test yIEld----")co=coroutine.create(function ( ) -- body for i=1,5 do print("co",i) --coroutine be suspend while call yIEld() coroutine.yIEld() print("co after yIEld",i) endend)print(coroutine.status(co))coroutine.resume(co) --执行resume,coroutine继续执行状态running,输出1,然后yIEld 状态变为suspendedprint(coroutine.status(co))coroutine.resume(co)--执行resume,coroutine继续执行状态running,输出2,然后yIEld 状态变为suspendedprint(coroutine.status(co))coroutine.resume(co)--执行resume,coroutine继续执行状态running,输出3,然后yIEld 状态变为suspendedprint(coroutine.status(co))coroutine.resume(co)--执行resume,coroutine继续执行状态running,输出4,然后yIEld 状态变为suspendedprint(coroutine.status(co))coroutine.resume(co)--执行resume,coroutine继续执行状态running,输出5,然后yIEld 状态变为suspendedprint(coroutine.status(co))coroutine.resume(co) --for循环了5次,5次循环之后状态是suspended, --这时候是suspended在yIEld(),所以要再一次resume,执行yIEld()后面的逻辑print(coroutine.status(co))print(coroutine.resume(co))总结
以上是内存溢出为你收集整理的Lua Coroutine 的简单使用全部内容,希望文章能够帮你解决Lua Coroutine 的简单使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)