我目前在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");
 }


您必须使用场景名称。别忘了您必须将场景拖到场景列表中。查看“构建设置”“构建场景”。



注意

如今,这并不是您在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;
  }


如果您对场景加载有任何疑问,请作为一个新问题分别提出。请注意,您几乎应该绝对不要执行“销毁(this);”。

10-08 13:58