Saya mencoba tiga cara berbeda untuk menggunakan ElapsedGameTime
dan TotalGameTime
, karena saya ingin kecocokan yang tepat, jadi semuanya diperbarui / digambar sesuai.
Ketika saya bereksperimen, saya belajar bahwa pembaruan pertama, ElapsedGameTime
dan TotalGameTime
keduanya 0.
Pembaruan kedua, ElapsedGameTime
adalah 0,0166667, yang benar (60 pembaruan per detik). Tetapi TotalGameTime
0, saya tidak mengerti mengapa.
Jadi, jika saya mulai menambahkan dari pembaruan ketiga ( time += gameTime.ElapsedTime
), ElapsedGameTime
sama dengan TotalGameTime
, jika tidak akan selalu ada perbedaan 0,0166667.
Bisakah seseorang menjelaskan hal itu kepada saya?
DIPERBARUI: kode
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
, atau GameTime.TotalGameTime.TotalMilliseconds
?