Unity计时器不会在级别重新启动上增加



我认为很简单的东西很难。我有一个计时器,可以在几秒钟内告诉我游戏的持续时间,我希望每次重新启动游戏时都可以重新启动。这是我写的代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TimeManager : MonoBehaviour {
    public static int time= (int)Time.time;

    private void Start()
    {
        time = 0;
    }
    public void Update()
    {
        time +=  (int) Time.time;
    }
}

首次加载游戏时,它可以正常工作,然后当游戏重新启动时,当玩家死亡时,它似乎不再移动,并且与以前的比赛相同的值。

默认时间变量

Unity具有一些可以执行相同任务的内置时间变量。

例如:

  • time.RealTimesIncestArtup(自游戏开始以来它将在几秒钟内给时间)
  • times.timesincelevelload(场景被加载以来为几秒钟)

参考:https://docs.unity3d.com/scriptreference/time.html

自定义脚本:

如果您想制作脚本来处理时间,那么您需要更改一些事情:

  • 在更新功能中,应该是时间。deltatime而不是时间。(time.deltatime将给予时间以来的时间)
  • 数据类型的时间变量应浮动,否则转换时间。到达整数始终给出零。

    public class TimeManager : MonoBehaviour 
    {    
        public static float time = 0;
        void Start()
        {
            time = 0;
        }
        void Update()
        {
            time += Time.deltaTime;
        }
    }
    

只是对与我有相同问题的任何人的更新。我用此代码解决了这个问题。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TimeManager : MonoBehaviour
{
    public static int time=0;
    private void Start()
    {
        time = (int)Time.timeSinceLevelLoad;
    }
    public void Update()
    {
        time = (int)Time.timeSinceLevelLoad;
        Debug.Log("time" + time);
    }
}

这计算了每次加载水平以来的时间

最新更新