我目前在 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/