Unity C#倒计时坚持通过场景
Unity C# countdown to persist through scenes
你好,我写了一个 C# 脚本,然后我可以在另一个脚本中调用它来跟踪不同场景之间的剩余时间量,然后在计时器达到 0 时加载场景。我相信这两个脚本都是写得正确,但是当计时器达到 0 时没有任何动作,我认为问题是我没有将代码放在正确的位置但我不太确定,我已经尝试将它添加到我的启动函数中和我的更新功能。
这是静态脚本 class;
public static class GlobalCountDown
{
static DateTime TimeStarted;
static TimeSpan TotalTime;
public static void StartCountDown(TimeSpan totalTime)
{
TimeStarted = DateTime.UtcNow;
TotalTime = totalTime;
}
public static TimeSpan TimeLeft
{
get
{
var result = DateTime.UtcNow - TimeStarted;
if (result.TotalSeconds <= 0)
SceneManager.LoadScene("Lose");
return TimeSpan.Zero;
//return result;
}
}
}
这是我在每个游戏场景中检查剩余时间的调用;
GlobalCountDown.StartCountDown (TimeSpan.FromSeconds (5));
我在编译脚本时收到警告 'The private field `GlobalCountDown.TotalTime' 已分配但从未使用过它的值'但我不确定如何修复它。
如有任何帮助或建议,我们将不胜感激。
改变这个
var result = DateTime.UtcNow - TimeStarted;
对此
var result = TotalTime - (DateTime.UtcNow - TimeStarted);
在你的行为中这样做
void Start()
{
GlobalCountDown.StartCountDown (TimeSpan.FromSeconds (5));
}
void Update()
{
if (GlobalCountDown.TimeLeft == TimeSpan.Zero)
SceneManager.LoadScene("Lose");
}
并从您的 GlobalCountDown 中删除 SceneManager 代码 class
你好,我写了一个 C# 脚本,然后我可以在另一个脚本中调用它来跟踪不同场景之间的剩余时间量,然后在计时器达到 0 时加载场景。我相信这两个脚本都是写得正确,但是当计时器达到 0 时没有任何动作,我认为问题是我没有将代码放在正确的位置但我不太确定,我已经尝试将它添加到我的启动函数中和我的更新功能。
这是静态脚本 class;
public static class GlobalCountDown
{
static DateTime TimeStarted;
static TimeSpan TotalTime;
public static void StartCountDown(TimeSpan totalTime)
{
TimeStarted = DateTime.UtcNow;
TotalTime = totalTime;
}
public static TimeSpan TimeLeft
{
get
{
var result = DateTime.UtcNow - TimeStarted;
if (result.TotalSeconds <= 0)
SceneManager.LoadScene("Lose");
return TimeSpan.Zero;
//return result;
}
}
}
这是我在每个游戏场景中检查剩余时间的调用;
GlobalCountDown.StartCountDown (TimeSpan.FromSeconds (5));
我在编译脚本时收到警告 'The private field `GlobalCountDown.TotalTime' 已分配但从未使用过它的值'但我不确定如何修复它。
如有任何帮助或建议,我们将不胜感激。
改变这个
var result = DateTime.UtcNow - TimeStarted;
对此
var result = TotalTime - (DateTime.UtcNow - TimeStarted);
在你的行为中这样做
void Start()
{
GlobalCountDown.StartCountDown (TimeSpan.FromSeconds (5));
}
void Update()
{
if (GlobalCountDown.TimeLeft == TimeSpan.Zero)
SceneManager.LoadScene("Lose");
}
并从您的 GlobalCountDown 中删除 SceneManager 代码 class