c# - 有人对 C# 中的基本计时器有一个好主意吗?
问题描述
有没有人有一个计时器的好主意?我试过使用秒表,但我一定做错了什么,我只是希望一个 int 值每秒上升一次,并且必须能够重置它。
这是我失败的一段代码:
//Timer systemet
Stopwatch Timer = new Stopwatch();
Timer.Start();
TimeSpan ts = Timer.Elapsed;
double seconds = ts.Seconds;
//interval
if(seconds >= 8)
{
Text = Text + 1;
Timer.Stop();
}
解决方案
我看到你用 XNA 和 MonoGame 标记了这个问题。通常,在这样的游戏框架中,您不会使用典型的计时器和秒表。
在 MonoGame 中,您通常会执行以下操作:
private float _delay = 1.0f;
private int _value = 0;
protected override void Update(GameTime gameTime)
{
var deltaSeconds = (float) gameTime.ElapsedGameTime.TotalSeconds;
// subtract the "game time" from your timer
_delay -= deltaSeconds;
if(_delay <= 0)
{
_value += 1; // increment your value or whatever
_delay = 1.0f; // reset the timer
}
}
当然,这绝对是最简单的例子。您可以变得更花哨并创建自定义class
来做同样的事情。这样您就可以创建多个计时器。MonoGame.Extended中有这样的示例,欢迎您从中借用代码。
推荐阅读
- django - django-rest-auth 从 rest-auth/user 获取用户名
- sql - 如何从表中不同列的一组数字中识别是否存在连续数字?
- java - 在 Java 输入中捕获非 Double
- javascript - 在 ngx 引导模式中检测 Click 事件
- batch-file - 选择语句进入错误的 IF 语句
- c++ - LeetCode 380:插入删除 GetRandom O(1)
- flutter - Flutter,尝试使用getter对map中的元素进行求和
- report - 如何从 Jacoco 代码覆盖率报告中排除自动生成的 Dao 并查看绑定类?
- powerbi - 显示 power bi 中的累积计数的折线图问题
- r - 为什么 dplyr::cummean(x) 不等于 cumsum(x)/seq_along(x)?