我认为很简单的事情被证明是困难的。我有一个计时器,可以在几秒钟内告诉我游戏已经进行了多长时间,并且我希望它在每次重新启动游戏时都重新启动。这是我写的代码。
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;
}
}
第一次加载游戏时,它运行良好,然后在玩家死亡时重新启动游戏时,它似乎不再移动,并停留在与之前比赛相同的值上。
答案 0 :(得分:1)
默认时间变量
Unity具有一些内置的Time变量,可以完成相同的任务。
例如:
参考:https://docs.unity3d.com/ScriptReference/Time.html
自定义脚本:
如果您想让脚本来处理时间,那么您需要更改的内容很少:
时间变量的数据类型应为浮点型,否则将Time.deltaTime转换为整数将始终为零。
public class TimeManager : MonoBehaviour
{
public static float time = 0;
void Start()
{
time = 0;
}
void Update()
{
time += Time.deltaTime;
}
}
答案 1 :(得分:-1)
仅对与我有相同问题的任何人进行更新。我用这段代码解决了这个问题。
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);
}
}
这将计算每次加载关卡以来的时间,因此当我的玩家死亡并重新启动时,它会从0开始计数。