我正在Unity3d中开发一个简单的游戏。
我创建了一个Coroutine
,它在特定时间后与WaitForSecond
一起起作用。
但是在某些状态下,它以StopCoroutine()
结尾。
我想知道Coroutine
停止时是否可以获取时间。
我的意思是当Coroutine
停止时,给我一个23或54秒之类的数字。
答案 0 :(得分:3)
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
yield return new WaitForSeconds(10);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Debug.Log("RunTime " + elapsedTime);
如果您只想让时间流逝,请尝试以下操作:
Coroutine testCoroutine = StartCoroutine(yourCoroutine());
然后,当您使用StopCoroutine(testCoroutine);
停止协程时,可以从上面记录的秒表功能返回。或者,您始终可以将Time.deltaTime
添加到变量并将其作为浮点数返回。那会给你几秒钟和几毫秒。
编辑作者发布代码后。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class sdfsd : MonoBehaviour {
// Use this for initialization
void Start () {
StartCoroutine(WaitUntilAPressed());
}
IEnumerator WaitUntilAPressed()
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
yield return new WaitUntil(()=> Input.GetKeyDown(KeyCode.A));
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Debug.Log(elapsedTime);
}
}
答案 1 :(得分:0)
GlobalScope.launch(Dispatchers.IO) {
val millis = measureTimeMillis {
// Do Stuff
}
val seconds = TimeUnit.MILLISECONDS.toSeconds(millis)
Log.d(TAG, "Time: $seconds seconds")
}