Unity3D 脚本 timeSinceLevelLoad 变量不返回 c#
Unity3D scripting timeSinceLevelLoad variable not returning c#
我正在设计我的第一款游戏,我正在尝试创建一个步长为 5 秒的时间变量(比如比实际时间慢 5 倍)。
这是我的 GUI(只粘贴相关部分):
using UnityEngine;
using Assets.Code.Interfaces;
using Assets.Code.Scripts;
using Assets.Code.PowerPlants;
namespace Assets.Code.States
Debug.Log (TimeManager.gametime);
public void ShowIt()
{
GUI.Box (new Rect (Screen.width - 650, 10, 100, 25), TimeManager.gametime.ToString() ); // GAME TIME HOURS
}
这是计算我的游戏时间的地方:
using System;
using UnityEngine;
namespace Assets.Code.Scripts
{
public class TimeManager
{
public static int gametime;
public TimeManager ()
{
gametime = (int)Time.timeSinceLevelLoad / 5;
}
}
}
我没有收到任何错误,但游戏时间的值始终为 0。这以前有效,但现在不再有效,我不知道为什么。有什么提示吗?
我想,这是因为你在TimeManager
的构造函数中只设置了一次gametime
。所以,永远不会更新。放到Update里面就可以了
namespace Assets.Code.Scripts
{
public class TimeManager
{
public static int gametime
{
get { return (int)Time.timeSinceLevelLoad / 5; }
}
}
}
ctor 在您的情况下没有用,只需添加一个 属性 即可 returns 您需要的值。
我正在设计我的第一款游戏,我正在尝试创建一个步长为 5 秒的时间变量(比如比实际时间慢 5 倍)。
这是我的 GUI(只粘贴相关部分):
using UnityEngine;
using Assets.Code.Interfaces;
using Assets.Code.Scripts;
using Assets.Code.PowerPlants;
namespace Assets.Code.States
Debug.Log (TimeManager.gametime);
public void ShowIt()
{
GUI.Box (new Rect (Screen.width - 650, 10, 100, 25), TimeManager.gametime.ToString() ); // GAME TIME HOURS
}
这是计算我的游戏时间的地方:
using System;
using UnityEngine;
namespace Assets.Code.Scripts
{
public class TimeManager
{
public static int gametime;
public TimeManager ()
{
gametime = (int)Time.timeSinceLevelLoad / 5;
}
}
}
我没有收到任何错误,但游戏时间的值始终为 0。这以前有效,但现在不再有效,我不知道为什么。有什么提示吗?
我想,这是因为你在TimeManager
的构造函数中只设置了一次gametime
。所以,永远不会更新。放到Update里面就可以了
namespace Assets.Code.Scripts
{
public class TimeManager
{
public static int gametime
{
get { return (int)Time.timeSinceLevelLoad / 5; }
}
}
}
ctor 在您的情况下没有用,只需添加一个 属性 即可 returns 您需要的值。