我认为很简单的东西很难。我有一个计时器,可以在几秒钟内告诉我游戏的持续时间,我希望每次重新启动游戏时都可以重新启动。这是我写的代码。
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);
}
}
这计算了每次加载水平以来的时间