Unity 2D - 脚本激活时的空引用

Unity 2D - Null Reference upon script activation

我有一个似乎无法解决的问题。

我有一个 AIManager 脚本。这具有所有控件以及我的敌人将如何移动。 然后我有一个 EnemyBasic 脚本。这代表了这个敌人的 AI 行为。他多久会攻击等等

我尝试使用有关 Raycasts 的教程,它可以帮助我实现敌人的视线。这奏效了,我的敌人确实发现了我,用 public bool 进行了测试。

现在是有问题的部分。如果我禁用 EnemyBasic 脚本,我的敌人就会留在一个地方,这是我想要的。在我进入他的视线后,我想激活 EnemyBasic 脚本,这样他就可以开始攻击我了。不幸的是,在我的代码中,这给出了一个错误:

NullReferenceException: 对象引用未设置为对象的实例 Sight.Raycasting () (在 Assets/Sight.cs:21) Sight.Update () (位于 Assets/Sight.cs:13)

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sight : MonoBehaviour {

    public Transform sightStart, sightEnd;
    public bool spotted = false;

    void Update () {
        Raycasting();
    }

     void Raycasting()
    {
        spotted = Physics2D.Linecast(sightStart.position, sightEnd.position, 1 << LayerMask.NameToLayer("Player"));

        if (spotted)
        {
           /*---> LINE OF ERROR */ gameObject.GetComponent<EnemyBasic>().enabled = true;
        }
    }
}

任何想法。我是团结的新手,所以它很有可能是愚蠢的。 谢谢!

正如@Programmer 在评论中所建议的那样。原来我的 Sight 脚本与 EnemyBasic 脚本不在同一个 GameObejct 下。复制脚本,它就像一个魅力。