0

私は最初のゲームを設計しており、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 です。これは以前は機能していましたが、機能しなくなっており、理由がわかりません。ヒントはありますか?

4

2 に答える 2

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

ctor はあなたの場合には役に立ちません。必要な値を返すプロパティを追加するだけです。

于 2015-12-12T18:57:23.167 に答える
1

gametimeこれは、のコンストラクターで一度だけ設定したためだと思いますTimeManager。したがって、更新されることはありません。Updateに入れると、動作します。

于 2015-12-12T18:54:44.140 に答える