gpt4 book ai didi

c# - 在 C# Unity3D 项目中添加延迟

转载 作者:太空宇宙 更新时间:2023-11-03 23:13:57 24 4
gpt4 key购买 nike

我目前在 Unity 上工作并使用 C# 语言。

到目前为止,我需要做一些事情(在最小的情况下,加载另一个场景)。

我的问题是,如何在我将光标放在该区域上几秒钟后让它发生?

这是我现在的代码。

 if (_newGameButton.Contains (Event.current.mousePosition)) {   
Application.LoadLevel (1);
Destroy (this);
}

我想在 _newGameButton 激活时添加延迟。现在,当我将光标移到 _newGameButton 上时,它会立即加载场景 1。我尝试了很多方法,例如使用 Invoke 和 WaitForSeconds。没有工作。如果错误是我如何使用它,那么正确的方法是什么?非常感谢您的帮助。

编辑:这个问题已经回答,我在 Activate and Deactivate Invoke function 中还有另一个问题.

最佳答案

要在 Unity 中制作定时器和延迟,只需使用 Invoke

void Start()
{
Debug.Log("hello from Start.");
Invoke("Test", 3f);
}

private void Test()
{
Debug.Log("hello from 'Test'");
}

InvokeRepeating

也非常方便
 Invoke("Test", 5f, 0.5f);

就这么简单。

在你的情况下

if (_newGameButton.Contains (Event.current.mousePosition))
{
Invoke("YourSceneName");
}

private void ChangeScenes()
{
UnityEngine.SceneManagement.SceneManager.LoadScene("ScreenMain");
}

您必须使用场景名称。不要忘记您必须将场景拖到您的场景列表中。查看“Build Settings”“Scenes in Build”。


注意事项

如今,这并不是您在 Unity 中加载场景的真正方式。他们改变了语法。更像是这样……

    UnityEngine.SceneManagement.SceneManager.LoadScene("ScreenMain");

如果要异步加载

AsyncOperation ao;
ao = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("SceneName");
while (!ao.isDone)
{
Debug.Log("loading " +ao.progress.ToString("f2"));
yield return null;
}

如果您对场景加载有任何疑问,请单独提出一个新问题。请注意,您几乎肯定不应该执行此“Destroy(this);”。

关于c# - 在 C# Unity3D 项目中添加延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37909924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com