【问题标题】:Error when I try to assign a variable to Rigidbody2D尝试将变量分配给 Rigidbody2D 时出错
【发布时间】:2020-08-02 03:28:44
【问题描述】:

当我尝试将 Rigidbody2D 添加到脚本时,它不断给我错误 CS0428:“无法将方法组 'GetComponent' 转换为非委托类型 'Rigidbody2D'。您打算调用该方法吗?”。也许它的东西我没有看到,但我经历了几次,没有发现任何问题。

using UnityEngine;

public class characterController : MonoBehaviour
{
    public Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>;
    }



    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(Vector2.up * 500);
        }
    }
}

【问题讨论】:

  • 错误信息很清楚,我认为:“你打算调用该方法吗?”。 rb = GetComponent&lt;Rigidbody2D&gt; 后面的括号你漏掉了。

标签: c# unity3d


【解决方案1】:

我认为您需要像这样在 Rigidbody2D 之后添加括号:

using UnityEngine;

public class characterController : MonoBehaviour { 
public Rigidbody2D rb;

void Start()
{
    rb = GetComponent<Rigidbody2D>;
}



void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        rb.AddForce(Vector2.up * 500);
    }
}
}

要再次避免此问题,请尝试仔细阅读错误消息。例如,通过阅读 GetComponents 上的文档可以轻松避免此问题。

【讨论】:

【解决方案2】:

GetComponent 后面的括号漏掉了

using UnityEngine;

public class characterController : MonoBehaviour 
{ 
    public Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }



    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(Vector2.up * 500);
        }
    }
}

代码尝试将其设置为委托,而不是运行 GetComponent() 方法并将 rb 设置为它的返回值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多