Unity中如何在while循环中添加延迟?(C#实现)
在C#的While循环中添加延迟的简单方法
根据你的需求,这里有两种常用的简单方法给while循环加延迟,适配不同场景:
1. 同步延迟(阻塞线程)
如果是简单的控制台程序,不需要保持线程响应,可以用Thread.Sleep(),它会让当前线程暂停指定的毫秒数。
首先需要引入命名空间:
using System.Threading;
修改后的代码:
int value = 0; // 假设你已初始化value while (value < 101) { Debug.Log(value); value += 10; Thread.Sleep(1000); // 延迟1秒,单位为毫秒 }
注意:这种方式会阻塞当前线程,若用于UI程序或Unity场景,会导致界面卡死,不推荐在这类场景使用。
2. 异步延迟(非阻塞)
如果需要保持线程响应(比如Unity、WPF/WinForms等),推荐用await Task.Delay(),这种方式不会阻塞线程,其他操作可正常执行。
需要引入命名空间:
using System.Threading.Tasks;
修改后的代码(注意方法要标记为async):
async Task YourMethodName() { int value = 0; while (value < 101) { Debug.Log(value); value += 10; await Task.Delay(1000); // 延迟1秒 } }
针对Unity场景补充
如果你的代码在Unity中运行,除了上述异步方式,还可以用Unity专属的协程(Coroutine),这也是Unity里常用的延迟实现方式:
IEnumerator DelayedLoop() { int value = 0; while (value < 101) { Debug.Log(value); value += 10; yield return new WaitForSeconds(1f); // 延迟1秒 } } // 调用协程 StartCoroutine(DelayedLoop());
内容的提问来源于stack exchange,提问作者Electrico28
相关产品推荐
相关产品推荐

