每当我离开现场并回来时,我的计时器就会冻结。

时间:2014-09-01 12:08:23

标签: scripting unity3d unityscript countdowntimer

我的计时器代码:

#pragma strict
private var initialtime : float;
private var texttime : String;
var CountMinutes : int;
var CountSeconds : int;
private var restseconds : int;
private var minutes : int;
private var seconds : int;
var guitime : float;

function Start () {
    initialtime=Time.time;
    CountSeconds = CountSeconds + (CountMinutes*60);
}

function OnGUI () {
    guitime = Time.time - initialtime;
    restseconds = CountSeconds -     guitime;
    seconds = restseconds%60;
    minutes = restseconds/60;
    texttime = String.Format("{0}:{1}",minutes, seconds);
    GetComponent(GUIText).text = texttime;

        if(seconds <=0 && minutes <=0)
        {
        //Pause the game
        Time.timeScale = 0;         
     DontDestroyOnLoad(GameObject.Find("Diamond"));
                 Application.LoadLevel("Score");
    }

我在另一个加载新场景的对象上有这个脚本,然后在那个场景中有一个按钮让我再次回到计时器场景然后当我在计时器场景中时,计时器不会移动。我不明白为什么。但是这个另外一个按钮加载另一个场景,如果我返回到计时器场景,计时器将正常工作。有没有人有任何想法?感谢

1 个答案:

答案 0 :(得分:0)

首先,如果您不断更换场景(就像您在显示乐谱时所做的那样),您应该使用Awake()函数更改Start()函数。

如果我没记错的话,Start函数会在整个时间内运行一次,而每次加载脚本时都会运行Awake。

除此之外,你还在恢复Time.timeScale吗?也许你要离开0。

作为最后一个选项,也许您应该在Update()instad OnGui()中执行这些完整的脚本:

  

if(秒&lt; = 0&amp;&amp; minutes&lt; = 0)          {

   //Pause the game
   Time.timeScale = 0;         
   DontDestroyOnLoad(GameObject.Find("Diamond"));
   Application.LoadLevel("Score");