我有这个循环,每当我的变量是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);
}
我的目标是摆脱在if语句中写出3的倍数,并且每当我的waveCounter变量是3的下一个倍数时仍然达到相同的目标。
答案 0 :(得分:20)
if((waveCounter % 3) == 0)
模运算:它将数字除以3并检查余数。可被3除数的数字没有余数(因此==0
)
答案 1 :(得分:8)
使用模数运算符,简单来说,它取得除法后的余数。 https://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx
如果余数为0,那么您知道该数字可以被3整除:
window.location.hash
答案 2 :(得分:4)
这个问题可以用模数(或除法余数)运算符解决,如下所示。
if (0 == waveCounter % 3)
{
// do stuff
}
else
{
// do other stuff
}