错误CS1525:意外符号“public”

时间:2015-07-29 01:13:52

标签: unity3d

我在修复此错误时遇到了一些问题。我之前已经有了它的工作,但是当我添加第二个GetKeyDown时它就停止了工作。对不起,如果我看起来很愚蠢,我是一个极端的初学者。

using UnityEngine;
using System.Collections;

    // Use this for initialization
    void Start () 
    {
        public int moveSpeed = 5;
    }
    // Update is called once per frame
    void Update () 
    {
        if (Input.GetKeyDown (KeyCode.D))
        {
            transform.Translate (Vector3.right * moveSpeed);
        };

        if (Input.GetKeyDown (KeyCode.A))
        {
            transform.Translate (Vector3.left * moveSpeed);
        };
    }
};

3 个答案:

答案 0 :(得分:3)

A)你缺少类声明行(你还有它的右括号)

using UnityEngine;
using System.Collections;

public class Stuff : MonoBehaviour { // <-- you need class declaration (it must be the same name as file "Stuff.cs"

    public int moveSpeed = 5; // <-- B) you need to declare this variable at this scope or else Update method won't be able to see it

    // Use this for initialization
    void Start () 
    {

    }

    // Update is called once per frame
    void Update () 
    {
        if (Input.GetKeyDown (KeyCode.D))
        {
            transform.Translate (Vector3.right * moveSpeed);
        }

        if (Input.GetKeyDown (KeyCode.A))
        {
            transform.Translate (Vector3.left * moveSpeed);
        }
    }
} //<-- also - no semicolons after the closing brackets

答案 1 :(得分:1)

为什么到处都有分号?无论如何,那不是问题。

// Use this for initialization
void Start () 
{
    int moveSpeed = 5; // remove public
}
// Update is called once per frame
void Update () 
{
    if (Input.GetKeyDown (KeyCode.D))
    {
        transform.Translate (Vector3.right * moveSpeed);
    }

    if (Input.GetKeyDown (KeyCode.A))
    {
        transform.Translate (Vector3.left * moveSpeed);
    }

}

告诉我这是否有效。

答案 2 :(得分:1)

尝试将其更改为:

public int moveSpeed;

void Start () 
{
    moveSpeed = 5;
}

我真正建议的不是在脚本中将moveSpeed设置为5,而是在编辑器中。将代码更改为我显示的内容后,moveSpeed将显示在编辑器检查器中。把它设置为你想要的任何东西。这样,您可以对速度不同的对象使用相同的脚本。