C#后备值

Get*_*awn 1 c# unity-game-engine

在javascript中,您可以使用||运算符基本上具有回退值,因此如果前面的语句返回falsey值,则使用后面的值||.

所以,例如这里如果GetComponent返回null,那么我们默认为Vector2.zero

Vector3 velocity = GetComponent<Rigidbody2D>().velocity || Vector2.zero;
Run Code Online (Sandbox Code Playgroud)

有写简写的方法吗?因为有了以上我得到:

运营商'||' 不能应用于'Vector2'和'Vector2'类型的操作数

15e*_*153 5

在C#4中,

Vector3 velocity;
var comp = GetComponent<Rigidbody2D>();

if (comp != null)
    velocity = comp.velocity;
else
    velocity = Vector2.zero;
Run Code Online (Sandbox Code Playgroud)

也尝试这个版本,看看它是否有效.它更好,如果comp.velocityVector2,我希望它会.但我不认识Unity,所以试试吧.

var comp = GetComponent<Rigidbody2D>();
Vector3 velocity = (comp == null) ? Vector2.zero : comp.velocity;
Run Code Online (Sandbox Code Playgroud)

您可以看到为什么?.操作员在将语言添加到语言时会遇到如此大声的hosannas.