代码行的快速解释

时间:2015-08-18 12:48:53

标签: c# vector

motion *= (Mathf.Abs(inputVec.x) == 1)?.7f:1;

据我所知,这条线意味着变量运动乘以向量inputVec的x部分的绝对值,但我不明白接下来会发生什么。

2 个答案:

答案 0 :(得分:3)

如果条件Mathf.Abs(inputVec.x) == 1为真,则motion乘以.7f。否则为1。

问号是条件运算符。这是一种编写if else语句的简洁方法。

例如:

if(Mathf.Abs(inputVec.x) == 1)
{
    motion *= .7f;
}
else
{
    motion *= .5f; 
}

相当于:

motion *= (Mathf.Abs(inputVec.x) == 1)?.7f:.5f;

所以你可以写一行代码而不是8行!

答案 1 :(得分:2)

  • ?:运算符是if / else conditional operator

  • 的简短方法
  • *=运算符是x = x * 1的快捷方式,解释here

  • Math.Abs()返回给定值的absolute

  • 0.7f - fsuffix,将值声明为浮动类型

所以..

motion *= (Mathf.Abs(inputVec.x) == 1)?.7f:1;

等于

if (Mathf.Abs(inputVec.x) == 1)) //if inputVec.x equals 1 or -1
{
    motion = motion * 0.7;
}
else
{
    motion = motion * 1;
}