我想问一下是否有内置的C#语句,该语句可以使我用更少的代码行编写以下内容:
float fH = Input.GetAxis("Horizontal"); //doesn't really matter where this comes from, but in this case, it's the user's input on a joystick
if (fH < 0)
{
fH = -1;
}
else if (fH > 0)
{
fH = 1;
}
else
{
//don't change anything
}
据我所知,我不能使用
fH = if(...)
因为这只允许2种情况,而我需要3种情况(小于0,大于0或0)。
答案 0 :(得分:7)
Math.Sign将返回输入是正,负还是0,仅需一条语句(根本不需要if
)。
Math.Sign(-2)
-1
Math.Sign(-3.3)
-1
Math.Sign(3)
1
Math.Sign(0)
0
它返回一个int32
,您可以在执行操作时将其重新分配回float
。
fH = Math.Sign(fH);
答案 1 :(得分:3)
我不确定我的答案是否是您需要的,但是您可以将代码简化为一行代码。
if (fH < 0)
{
fH = -1;
}
else if (fH > 0)
{
fH = 1;
}
else
{
//don't change anything
}
将上面的代码变成下面的一行代码。
fH = (fH < 0) ? -1 : ((fH > 0) ? 1 : 0);
代码中的else
部分提到fH
的值不变。仅当fH
值为0时才可执行。因此,我将零值放在一行代码的末尾。