我有这个循环,每次我的变量是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)
使用模数运算符,简单来说,它可以获得除法后的余数. https://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx
如果余数为0,那么您知道该数字可以被3整除:
if(waveCounter % 3 == 0)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
这个问题可以用模(或除法余数)运算符解决,如下所示。
if (0 == waveCounter % 3)
{
// do stuff
}
else
{
// do other stuff
}
Run Code Online (Sandbox Code Playgroud)