Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity c#场景管理器加载场景未从任务运行。延迟_C#_Unity3d - Fatal编程技术网

Unity c#场景管理器加载场景未从任务运行。延迟

Unity c#场景管理器加载场景未从任务运行。延迟,c#,unity3d,C#,Unity3d,在这个项目中,在一些代码中,延迟被启动,然后继续执行Debug.Log(“Test”)和SceneManager.LoadScene(…) (我使用UnityEngine.SceneManager;) 整个事情看起来像: Task.Delay(2).ContinueWith(t => { Debug.Log("Test"); SceneManager.LoadScene(SceneManager.GetActiveScene().name); }); 发生了什么: 控制台打印“测试”

在这个项目中,在一些代码中,延迟被启动,然后继续执行
Debug.Log(“Test”)
SceneManager.LoadScene(…)

(我使用UnityEngine.SceneManager;

整个事情看起来像:

 Task.Delay(2).ContinueWith(t => { Debug.Log("Test"); SceneManager.LoadScene(SceneManager.GetActiveScene().name); });
发生了什么:

控制台打印“测试” 但这一幕并没有开始。我还测试了加载另一个场景,但什么也没发生。 有人知道您是否无法在延迟功能中加载场景吗?)


(控制台中没有错误)

我不是unity专家,但我看到添加了async/await,所以您可以做您想做的事情……有点像。不过,你不想像拥有它那样去做。我在这里更一般地依赖于异步/等待的知识…ContinueWith将在默认调度器的控制下调度继续…可能在线程池线程上,而这不是您想要的。事实上,我敢打赌,在你这样做的过程中,会发生一个异常…我猜这是因为你没有在主线程上调用LoadScene。相反,您可以只执行以下操作:

await Task.Delay( 2 );
Debug.Log("Test");
SceneManager.LoadScene(SceneManager.GetActiveScene().name);

wait的工作方式是,当前方法中的其余代码将作为当前线程上的延续进行注册。因此,您将获得所需的行为:2秒钟的延迟,然后是代码的剩余部分。

您不能像这样在Unity中使用线程。你应该使用协同程序。非常感谢,我会试试的