c# - 如何在运行某些特定代码之前等待
问题描述
我在 C# 中使用统一,并希望让玩家在输掉之后继续移动一段时间,然后才重新加载场景。我试过了:
{
if (inf.collider.tag == "Obstacle") {
movement.enabled = false;
Camera.enabled = false;
System.Threading.Thread.Sleep(1000);
SceneManager.LoadScene("Level");
}
}
但问题是,当它到达睡眠线时,整个游戏和物理都会释放。SceneManager.LoadScene("Level")
如果不冻结所有进程,我将如何等待执行?
解决方案
您应该尝试使用协程 https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html
using System.Collections;
//....
{
if (inf.collider.tag == "Obstacle")
{
movement.enabled = false;
Camera.enabled = false;
StartCoroutine(LoadSceneAfterTime(1));
}
//....
}
private IEnumerator LoadSceneAfterTime(float waitTime)
{
yield return new WaitForSeconds(waitTime);
SceneManager.LoadScene("Level");
}
推荐阅读
- python - Python:检查两个变量是否具有相同的内容?两个变量都是未知的,可以是 DataFrames、列表列表等
- c++ - C++ std::filesystem::copy 因“无法到达网络位置”而失败
- python - 如何使用 python 使用存储在 Windows 证书管理器中的证书
- javascript - 正则表达式删除所有 unix 时间戳
- python - 从没有唯一类的页面中抓取某些内容
- regex - 在具有 2 个选项的正则表达式中具有不同的字符
- javascript - 根据类别 JAVASCRIPT 对多个属性进行分组。适用于一个但不是所有属性
- sql - 填补缺失的月份
- c# - 使用C#,如何通过读取包含从示波器获取的波形的时间和样本值的文件来识别它是否是正弦波?
- c# - 将 Framework 4.7.2 库公开为 Web API 的最简单方法