【问题标题】:Unity An object reference is required to access non-static member C#Unity 访问非静态成员 C# 需要对象引用
【发布时间】:2023-03-30 21:52:01
【问题描述】:

我正在尝试使用 Unity 引擎学习 C#

但是像这样的基本脚本:

using UnityEngine;
using System.Collections;

public class scriptBall : MonoBehaviour {

    // Use this for initialization
    void Start () {
        Rigidbody.AddForce(0,1000f,0);
    }

    // Update is called once per frame
    void Update () {

    }
}

给出这个错误: Assets/Scripts/scriptBall.cs(8,27):错误 CS0120:需要对象引用才能访问非静态成员 `UnityEngine.Rigidbody.AddForce(UnityEngine.Vector3, UnityEngine.ForceMode)'

我找不到解决问题的方法

【问题讨论】:

  • AddForceRigidbody 的实例方法。在调用 AddForce 之前,您需要一个 Rigidbody 的实例。不然你加什么力?

标签: c# unity3d


【解决方案1】:

您需要先实例化您的类Rigidbody,然后才能访问非静态字段,例如AddForce

来自以下文档:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public float thrust;
    public Rigidbody rb;
    void Start() {
        // Get the instance here and stores it as a class member.
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate() {
        // Re-use the member to access the non-static method
        rb.AddForce(transform.forward * thrust);
    }
}

更多:http://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

【讨论】:

  • 您可能希望给出 C# 示例,而不是 Java 示例。
  • @RonBeyer 傻我 :) 谢谢!
【解决方案2】:

为刚体添加局部属性并在编辑器中设置或使用

var rigidBody = GetComponenet<RigidBody>();
rigidBody.Addforce(...)

通过代码而不是编辑器获取组件的本地实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    相关资源
    最近更新 更多