我在 Unity 中同时得到 ')' 和 '}'

I get both ')' & '}' expected in Unity

这是我的代码:

    void Update () {

    Vector2 ChrP = transform.position;

    if (ChrP == new Vector2(-3.03f, 3.02f))
    {
        if (float RightPress = Input.GetAxisRaw("Right")){
            transform.position = new Vector2(-1.36f, 3.02f);

        } if (float DownPress = Input.GetAxisRaw("Down")) {
            transform.position = new Vector2(-3.03f, 1,401f);

        } else {
            return null;
        }


    }

所以在这段代码中我得到了问题:')' & '}' 预期并且很长时间未能解决它 问题出现在第 7 & 10 和 13 行。

这样做的原因是您试图在 if 语句中创建一个 variable/field,然后将其与……没有进行比较:

// here you're trying to create new variable of type float
// and assign its value instead of comparing if Axis <> 0
if (float RightPress = Input.GetAxisRaw("Right")){
    transform.position = new Vector2(-1.36f, 3.02f);
}

要根据你没有使用 RightPress 来解决这个问题,你可以只检查 Input.GetAxisRaw(...) 的绝对值是否大于 0 :

if (Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f) {
    transform.position = new Vector2(-1.36f, 3.02f);
}

另一个问题是你的方法 returns void 所以基本上你不应该 return 什么,你正在尝试 return 一个 null 值:

else {
    return null;
}

通过删除此处的 null 来解决此问题。


我在这里看到的最后一个问题是您的方法缺少右括号(方法主体末尾的 })。所以完整的代码应该是这样的:

void Update () 
{
    Vector2 ChrP = transform.position;
    if (ChrP == new Vector2(-3.03f, 3.02f))
    {
        if ( Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f ) 
        {
            transform.position = new Vector2(-1.36f, 3.02f);
        } 

        if ( Mathf.Abs(Input.GetAxisRaw("Down")) > 0.0f ) 
        {
            transform.position = new Vector2(-3.03f, 1.401f);
        }
    }
}