Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在一定时间段后如何增加分数?新华社_C#_Timer_Xna_Stopwatch - Fatal编程技术网

C# 在一定时间段后如何增加分数?新华社

C# 在一定时间段后如何增加分数?新华社,c#,timer,xna,stopwatch,C#,Timer,Xna,Stopwatch,在5秒后增加球员的得分时有点困难。最终,我希望能够使用相同的逻辑,在所有不同的时间段后,通过“x”数量增加分数。目前,分数正在以每秒10到60次的速度递增(由于每秒调用更新方法60次)。这意味着分数最终是560而不是10 我想尝试使用变量,比如isPreviousScoreChanged和isCurrentScoreChanged,比如检测按钮是否被按下和释放,但是这也不是很好 我正在使用Stopwatch类来跟踪游戏开始以来经过的秒数 代码大致如下: if (Stopwatch.Elapsed

在5秒后增加球员的得分时有点困难。最终,我希望能够使用相同的逻辑,在所有不同的时间段后,通过“x”数量增加分数。目前,分数正在以每秒10到60次的速度递增(由于每秒调用更新方法60次)。这意味着分数最终是560而不是10

我想尝试使用变量,比如
isPreviousScoreChanged
isCurrentScoreChanged
,比如检测按钮是否被按下和释放,但是这也不是很好

我正在使用Stopwatch类来跟踪游戏开始以来经过的秒数

代码大致如下:

if (Stopwatch.ElapsedTicks == 5)
{
    playerScore += 10;
}
[我知道可以在这里粘贴代码,但粘贴的内容不多,而且我到目前为止所做的工作非常简单]


非常感谢大家阅读:-)

首先-我建议不要使用滴答声,因为一次滴答声的时间非常少。秒-如果每x秒更新一次,如果效率更高,则使用模数运算符

if((Stopwatch.elapsedmillyses%2000)==0){playerScore+=10}


在本例中,分数应每2秒更新一次。

执行以下操作:

if (timer > TimeSpan.Zero)
{
   timer -= gameTime.ElapsedGameTime;
   if (timer <= TimeSpan.Zero)
   {
       playerScore += 10;
       timer = TimeSpan.Zero;
   }
}
if(计时器>时间跨度0)
{
计时器-=gameTime.ElapsedGameTime;

如果(计时器)这可能会有帮助,您是否可以确定每秒要增加多少分数,只需使用Stopwatch.elapsedmillesons(当然在转换为秒后)蒂姆:我之前把秒表转换成了秒,还说我想增加10,但这不起作用,因为分数肯定是每秒增加60倍10。谢谢你的回复。出于某种原因,这似乎不起作用。我已经注释掉了前面的代码,我只是使用了你推荐的代码上面。事实上,我刚刚再次运行了我的游戏,它随机运行了一次,但是我在它运行之前和之后运行了它,然后它就不工作了。我希望这是有意义的。再次感谢你的回复,我很感激:)它只有在被另一个函数调用时才工作。制作一个单独的线程可能是一个好主意,只有这样你才能使用一段时间(true)循环,增加分数并休眠x毫秒,直到再次触发。语法应该相当简单,请参见。酷,好,我会试试。非常感谢v Ianis:-)谢谢Pinckerman,这似乎很有效,尽管我一直在使用秒表课程……也许我可以稍微调整一下,但是这似乎有效,而且相对简单。谢谢:D这是我每次需要处理时间间隔时都要做的,所以我确信它确实有效:D