我目前在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);”。