【问题标题】:My timer freezes everytime I leave the scene and come back.每次我离开现场并回来时,我的计时器都会冻结。
【发布时间】:2014-10-25 15:57:06
【问题描述】:

我的计时器代码:

#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");
    }

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

【问题讨论】:

    标签: scripting unity3d unityscript countdowntimer


    【解决方案1】:

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

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

    除此之外,您是否将 Time.timeScale 还原?也许你会在 0 点离开。

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

    如果(秒

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

    【讨论】:

    • 我该如何解决这个问题
    猜你喜欢
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    相关资源
    最近更新 更多