私が使用しての3つの異なる方法をしようとしていたElapsedGameTime
し、TotalGameTime
それに応じて描かれた/、私は完全に一致したいので、そのすべてが更新されます。
私が試したので、私は非常に最初の更新ということを学んだ、ElapsedGameTime
とTotalGameTime
の両方0です。
2番目の更新ElapsedGameTime
は0.0166667で、これは正しい(毎秒60回の更新)です。しかしTotalGameTime
、0です。理由はわかりません。
したがって、3回目の更新(time += gameTime.ElapsedTime
)から追加を開始した場合、ElapsedGameTime
はに等しくなりますTotalGameTime
。それ以外の場合は、常に0.0166667の差があります。
誰かが私にそれを説明できますか?
更新:コード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.Diagnostics;
namespace TestTime
{
class TimeTest2
{
TimeSpan totalTimeElapsed;
TimeSpan frequency = TimeSpan.FromSeconds(5.5f);
int times = 0;
int timesCheckpoint = 1;
public void load()
{
}
public void initialize()
{
totalTimeElapsed = TimeSpan.Zero;
}
public void update(GameTime gameTime)
{
times++;
String debug = "";
TimeSpan zero = TimeSpan.Zero;
if( times > 2 )
{
totalTimeElapsed += gameTime.ElapsedGameTime;
}
if( totalTimeElapsed != gameTime.TotalGameTime )
{
debug += " Diff time:"+times+" ["+totalTimeElapsed.ToString() + " != " + gameTime.TotalGameTime.ToString() + "]";
}
TimeSpan checkpoint = TimeSpan.FromSeconds(5.5f*timesCheckpoint);
if( gameTime.TotalGameTime >= checkpoint )
{
debug += "5.5f MARK ";
timesCheckpoint++;
}
if( !debug.Equals("") )
{
addDebug(debug + " -" + gameTime.TotalGameTime.ToString());
addDebug("");
}
}
public void draw()
{
}
public void addDebug(string str)
{
Debug.WriteLine(str);
}
}
}
GameTime.TotalGameTime.Milliseconds
かGameTime.TotalGameTime.TotalMilliseconds
?