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游戏物体隐藏了协程会如何的主要内容,如果未能解决你的问题,请参考以下文章

在unity3d里怎样隐藏物体?

unity获取游戏物体

Unity3D利用物体碰撞检测键盘输入处理完成平衡球游戏

转载 ---- Unity3D自学记录代码获取隐藏游戏对象

《Unity3D动作游戏开发实战》如何扩展?

unity3d 物体scene中隐藏