C# 布尔NullReferenceException

C# 布尔NullReferenceException,c#,unity3d,C#,Unity3d,Unity3d 我得到了与ifraytest相关的错误。obstacleExists==true 以下是主要脚本: private Raytest raytest; void Start() { target = new Vector3(5f, 0f, 0f); obTarget = new Vector3(obstacle.transform.position.x - 1.3f, 0f, 0f); raytest = GetComponent<Raytest&g

Unity3d 我得到了与ifraytest相关的错误。obstacleExists==true 以下是主要脚本:

private Raytest raytest;

void Start()
{
    target = new Vector3(5f, 0f, 0f);
    obTarget = new Vector3(obstacle.transform.position.x - 1.3f, 0f, 0f);
    raytest = GetComponent<Raytest>();
}

public void Movement()
{
    float step = speed * Time.deltaTime;

    //if there is an obstacle ahead
    //stop 1-2 meters before him
    //else
    //go to target position

    if(runCode==true)
    {
        if(raytest.obstacleExists==true)
        {
            transform.position = Vector3.MoveTowards(transform.position, obTarget, step);
        }

        else
        {
            transform.position = Vector3.MoveTowards(transform.position, target, step);
        }
    }
}

有人知道为什么会发生这种情况吗?

光线测试似乎没有实例化。检查变量是否为null

if(raytest?.obstacleExists==true)
{
    transform.position = Vector3.MoveTowards(transform.position, obTarget, step);
}

没有布尔空引用,因为@00110001提到的布尔是一种值类型,所以不能得到布尔空引用异常,问题可能是你的私有Raytest Raytest;未实例化或引用任何对象。您可能需要提供有关错误的更多信息,因为很难找出我们的codeGetComponent的确切问题所在。如果游戏对象附加了一个组件,则返回类型为Type的组件;如果没有,则返回null。