每三次迭代C#

arj*_*olf 4 c# loops

我有这个循环,每次我的变量是3的倍数时,对我执行一个简单的任务,目前我必须创建一个大循环,其中包含3的每个倍数与逻辑OR(3,6,9,... ).我想知道是否有更有效的方法来做到这一点.

这是我的代码片段:

if (waveCounter == 3 || waveCounter == 6 || waveCounter == 9 || waveCounter == 12)
{
    amount = 0.03f;
    dayNight.lightAmout = amount;
    dayNight.light.intensity = Mathf.Lerp(dayNight.light.intensity, dayNight.lightAmout, fadeTime * Time.deltaTime);
}
else
{
   amount = 1f;
   dayNight.lightAmout = amount;
   dayNight.light.intensity = Mathf.Lerp(dayNight.light.intensity, dayNight.lightAmout, fadeTime * Time.deltaTime);
}
Run Code Online (Sandbox Code Playgroud)

我的目标是摆脱在if语句中写出3的倍数,并且每当我的waveCounter变量是3的下一个倍数时仍然实现相同的目标.

Mar*_*ell 21

if((waveCounter % 3) == 0)
Run Code Online (Sandbox Code Playgroud)

模数运算:它将数字除以3并检查余数.可被3除数的数字没有余数(因此==0)


Col*_*lin 8

使用模数运算符,简单来说,它可以获得除法后的余数. https://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx

如果余数为0,那么您知道该数字可以被3整除:

if(waveCounter % 3 == 0)
{ 
    //do something
}
Run Code Online (Sandbox Code Playgroud)


Cod*_*dor 5

这个问题可以用模(或除法余数)运算符解决,如下所示。

if (0 == waveCounter % 3)
{
    // do stuff
}
else
{
    // do other stuff
}
Run Code Online (Sandbox Code Playgroud)