【发布时间】:2019-06-22 04:02:51
【问题描述】:
我正在构建一个有几个场景的放置游戏 我想知道是否有更好的方法来做计时器,因为当我使用计时器进入场景时,我在文本更新之前有延迟
我正在使用协程每 1 秒减去一次
public class CoalResarch : MonoBehaviour
{
bool CreatingWords = false;
public bool timerIsDone = false;
public static float hour = 1;
public static float min = 0;
public static float sec = 1;
void Update()
{
if (CreatingWords == false)
{
CreatingWords = true;
StartCoroutine(DisplayWoodMinningSec());
}
}
public IEnumerator DisplayWoodMinningSec()
{
//Timer
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("ResearchScene"))
{
GlobalResearch.CoalTimer.text = "0" + hour + ":" + min + ":" + Mathf.Round(sec);
}
yield return new WaitForSeconds(1);
sec -= 1;
if (timerIsDone == false && sec < 0)
{
if (min > 0)
{
min -= 1;
sec = 59;
}
else
{
if (hour > 0)
{
hour -= 1;
min = 59;
sec = 59;
}
else
{
sec = 0;
}
}
if (hour == 0 && min == 0 && sec == 0)
{
Debug.Log("Finish!");
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("ResearchScene"))
{
// GlobalResearch.CoalTimer.text = "Finished !";
}
}
}
if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("ResearchScene"))
{
GlobalResearch.CoalTimer.text = "0" + hour + ":" + min + ":" + Mathf.Round(sec);
}
CreatingWords = false;
}
}
我只是想让它工作得更顺利,请帮助:)
【问题讨论】:
标签: c# visual-studio unity3d