【发布时间】:2015-02-24 01:55:45
【问题描述】:
我创建了一个通过协程启动的简单进度条。我每四分之一秒 (0.25f) 在 for...loop 中输出,但 GUI 的进度条每 ~ 1 秒更新一次,而不是每四分之一秒更新一次。我究竟做错了什么?或者这是一个错误?
IEnumerator Timer() {
float time = 60f;
float tick = 0;
float progress = 0;
float smoothTime = 4f;
while (true) {
progress = (tick/time) * 640f;
Debug.Log("Tick: " + tick);
for (int i = 0; i < smoothTime; i++) {
// THIS SHOULD UPDATE EVERY 1/4th OF A SECOND BUT DOESN'T
rawImageRectTransform.sizeDelta = new Vector2(progress/smoothTime, 10f);
yield return new WaitForSeconds(1f/smoothTime);
}
if (tick >= 60f) {
Debug.Log("*** GAME OVER ***");
break;
}
tick++;
}
}
秒数将出现在 GUI 文本标签中,位于进度条上方并居中(该代码不在此处,因为我在创建平滑准确的进度条时遇到问题)。
使用 Unity3D 4.6.3 / C#
【问题讨论】:
标签: unity3d