繁体   English   中英

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;
        }
    }
}

我没有收到任何错误,但是gametime的值始终为0。该值以前曾起作用,但现在不再起作用,我也不知道为什么。 有什么提示吗?

我认为,这是因为您在gametime的构造函数中只设置了一次TimeManager 因此,它将永远不会被更新。 将其放在更新中,然后它将起作用。

namespace Assets.Code.Scripts
{
    public class TimeManager
    {
        public static int gametime 
        { 
           get { return (int)Time.timeSinceLevelLoad / 5;  }
        }
    }
}

ctor在您的情况下没有用,只需添加一个返回所需值的属性即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM