UNity用协程写一个倒计时每30秒重复并每秒输出成string
时间: 2024-02-29 18:53:01 浏览: 218
好的,以下是修改后的代码示例:
```csharp
using UnityEngine;
using System.Collections;
public class CountdownTimer : MonoBehaviour
{
private float timeRemaining = 30f;
private WaitForSeconds waitTime = new WaitForSeconds(1f);
private void Start()
{
StartCoroutine(Countdown());
}
private IEnumerator Countdown()
{
while (true)
{
for (int i = 0; i < 30; i++)
{
yield return waitTime;
timeRemaining -= 1f;
string timeString = string.Format("{0:00}:{1:00}", Mathf.FloorToInt(timeRemaining / 60f), Mathf.FloorToInt(timeRemaining % 60f));
Debug.Log(timeString);
}
timeRemaining = 30f;
}
}
}
```
与上一个示例相比,我们将 `waitTime` 的值修改为 1 秒,这样每隔一秒就会执行一次循环体。
在循环体中,我们使用 `for` 循环来重复执行 30 次,这样就可以实现每隔 30 秒输出一次剩余时间的字符串。在每次循环中,我们将 `timeRemaining` 减去 1 秒,然后计算出剩余时间的分钟数和秒数并将它们格式化成一个字符串,最后使用 `Debug.Log()` 输出这个字符串。
当 `for` 循环执行完毕后,我们将 `timeRemaining` 的值重置为 30 秒,这样就可以重新开始一个新的循环。
阅读全文