Unity C# 中有简单的等待/睡眠功能吗?

Is there a simple wait / sleep function in Unity C#?

提问人:Benjamin Ecker 提问时间:10/12/2023 更新时间:11/19/2023 访问量:95

问:

我正在制作一个游戏,我需要及时更改一个 UI 元素,如下所示:

t.text = "Hello!";
wait_function(3);
t.text = "I will be your guide.";
wait_function("TO DEATH!");

Unity C# 中是否有简单易调用的 wait 函数?

C# Unity-Game-Engine 等待 睡眠

评论

1赞 Retired Ninja 10/12/2023
在 Unity 中,您不能停止主线程来等待某些东西。它将冻结整个应用程序。一种选择是为此使用协程。docs.unity3d.com/Manual/Coroutines.html
1赞 BugFinder 10/12/2023
根据 Unity 的版本,您可以使用 awaitables,效果很好,但是,有很多方法可以进行某种形式的倒计时,Ninja 说协程,它们有效,其他方法包括调用或计时器。

答:

1赞 Sanat Sadangi 10/12/2023 #1

可以使用协程或 IEnumerator 函数,在其中,可以使用命令 WaitForSeconds(int) 来获得等待函数。

喜欢这个。。。

void Start(){
    StartCoroutine(ExampleCoroutine());
}

IEnumerator ExampleCoroutine() {
    yield return new WaitForSeconds(3);
}

文档链接

1赞 Mohammad Ghaznavi 10/12/2023 #2

您还可以使用 Invoke 函数。 此外,最近还向 Unity 添加了一个名为 Awaitable Functions 的新功能,它解决了在 Unity 中使用 async/await 的时序问题。一个可等待的函数是 WaitForSecondsAsync。

关于Awaitable: https://docs.unity3d.com/2023.1/Documentation/ScriptReference/Awaitable.html

关于函数:https://docs.unity3d.com/2023.1/Documentation/ScriptReference/Awaitable.WaitForSecondsAsync.html

还有一个由塔罗杰夫制作的关于它的 YouTube 视频:https://www.youtube.com/watch?v=X9Dtb_4os1o