我正在設計我的第一場比賽,我試圖用5秒的步驟創建一個時間變量(比實時慢5倍)。Unity3D腳本編寫timeSinceLevelLoad變量不返回c#
這是在那裏我有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不是MonoBehaviour,所以它沒有更新。你在事實上得到了正確的結果,它在ctor中設置了一次,從未更新過。 – Everts
好的,那麼你可以給它一個更新方法,並在需要新值之前從另一個方法調用它。 –
你可以做到,但看看我的答案(我不認爲這是最好的答案)。 Unity已經在考慮更新timeSinceLevelLoaded,他所需要的只是部門。如果不是每個幀都進行調用,在Update中運行將會有點浪費。但是,再次,你是對的,添加更新並從MonoBehaviour中調用它是一個解決方案。 – Everts