字段初始化器不能引用非静态字段方法或属性'Component.GetComponent()

本文关键字:字段 GetComponent Component Rigidbody 属性 不能 初始化 引用 方法 静态 | 更新日期: 2023-09-27 18:04:55

我不知道发生了什么,我正试图遵循在Unity 4中编写的教程,并且很多都发生了变化。这就是我所得到的,现在我被卡住了。

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed;
    public static Rigidbody rb = GetComponent<Rigidbody>();
    private Vector3 input;
    // Use this for initialization
    void Start()
    {
    }
    // Update is called once per frame
    void Update()
    {
        input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        GetComponent<Rigidbody>().AddForce(input);
    }
}

字段初始化器不能引用非静态字段方法或属性'Component.GetComponent<Rigidbody>()

你不能在函数之外使用Unity的GetComponent函数。把它放到一个函数中,你应该没问题。在这种情况下,将其放在Start()Awake()函数中比较合适。

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed;
    public static Rigidbody rb;
    private Vector3 input;
    // Use this for initialization
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    // Update is called once per frame
    void Update()
    {
        input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        GetComponent<Rigidbody>().AddForce(input);
    }
}