unity游戏物体隐藏了协程会如何
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity游戏物体隐藏了协程会如何相关的知识,希望对你有一定的参考价值。
参考技术A u3d协程是支持在可见物体上的,执行的物体被隐藏携程会中断执行 。u3d协程是支持在可见物体上的,执行的物体被隐藏携程会中断this.StartCoroutine(Test(a))IEnumerator Test(int a)_undefined
_ebug.log("1");
_ield return null;
_ameObject.SetActive(false);
_ield return nulll; // 这里携程就退出了,不会再执行。因为物体隐藏了。
_ameObject.SetActive(true);
_ield return null;
_
_谜飧鎏氐悖匚锾逡彩且恢滞V构以谡馕锾迳纤行痰姆椒ā?
为啥这个协程会停止主线程?
【中文标题】为啥这个协程会停止主线程?【英文标题】:Why is this coroutine halting the main thread?为什么这个协程会停止主线程? 【发布时间】:2020-08-31 18:56:37 【问题描述】:这个函数一直有效,直到我把它放在一个 while true do 循环中。如果我把它放在循环中,它将无限等待。
编辑:我发现等待确实有效;然而,出于某种原因,即使它被包裹在协程中,它也会停止主线程。不知道为什么?
function wait(seconds)
local start = os.time()
repeat until os.time() > start + seconds
end
local function countDown()
while true do
wait(1)
if isInNumberGame == true then
timeSinceLastMessage = timeSinceLastMessage - 1
if timeSinceLastMessage == 0 then
isInNumberGame = false
local messageChannel = mem.guild:getChannel("668605956426563626")
messageChannel:send("<@"..currentmember.user.id.."> Game over! Out of time to respond (the number was "..num..")")
end
end
end
end
local countDownNumGame = coroutine.wrap(countDown)
countDownNumGame()
【问题讨论】:
这能回答你的问题吗? How to add a "sleep" or "wait" to my Lua Script? 您能否提供更多关于您正在使用的库或平台的信息? 我正在使用 discordia 作为我的库。 Roblox Lua 是我所经历的,但你说 Lua 是一种单线程语言。我希望 while true do 循环不会中断其余代码,而只是在后台运行。我认为这是协程的使用。不是吗? 如果没有,我应该使用什么,它不会暂停线程? 【参考方案1】:由于您使用的是使用 luv(libuv 的 lua 实现)的 Discordia,因此您可以使用 luv 中存在的计时器实例。
Here is a working delay function (Author creationix)
local function delay(ms)
local thread = coroutine.running()
local timer = uv.new_timer()
timer:start(ms, 0, function ()
timer:close()
coroutine.resume(thread)
end)
coroutine.yield()
end
【讨论】:
这实际上是针对我正在制作的 Discord 机器人,而不是 Roblox Lua。以上是关于unity游戏物体隐藏了协程会如何的主要内容,如果未能解决你的问题,请参考以下文章