NullReferenceException: Object reference not set to an instance of an object Finded.Update ()

Решил сделать скрипт для Бота, при попадание луча в коллайдер с тегом "Player" активируется скрипт на преследование. Но вылазит ошибка:

NullReferenceException:Object reference not set to an instance of an object.

Подскажите пожалуйста как решить данную проблему.

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

public class Finded : MonoBehaviour
{
    [SerializeField]
    private Look look;//Скрипт на преследование игрока Ботом;
    [SerializeField]
    public float range = 10;
    [SerializeField]
    public float raydistance = 3f;
    [SerializeField]
    public bool lookright;
    void Start()
    {
        Physics2D.queriesStartInColliders = false;
    }

    // Update is called once per frame
    void Update()
    {
        RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.localScale.x * Vector2.right, raydistance);//луч
       
            if(hit.collider.gameObject.tag == "Player")
            { 
                look.gameObject.GetComponent<Look>().enabled = true;// Включить скрипт
            }
           
    }

    private void OnDrawGizmos()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawLine(transform.position, transform.position + transform.localScale.x * Vector3.right * raydistance);

        Gizmos.color = Color.red;
        Gizmos.DrawLine(transform.position, transform.position + transform.localScale.x * Vector3.left * raydistance);

    }
}

Ответы (1 шт):

Автор решения: Alemkhan Utepkaliev

Вам не нужно повторно запрашивать GetComponent() так как у Вас уже есть ссылка на этот компонент в самом поле look, упрощайте до look.enabled = true, если показывает NullReferenceException значит запрашиваемый обьект null то есть пустой, ссылка не назначена, запустите проект и проследите за полем, возможно вы создаёте новый компонент Finded без ссылки на Look.

Для дополнительной проверки проверяйте после тега наличие данного look

void Update()
{
    RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.localScale.x * Vector2.right, raydistance);//луч
   
        if(hit.collider.gameObject.tag == "Player")
        { 
            if(look != null) // Если он не null, то код сработает
            {
                look.enabled = true;
            }
            else // Иначе в консоле *красным текстом* выведется что ссылка отсутсвует
            {
                Debug.Log(<color=red> Ссылка на компонент Look отсутвует! </color>)
            }
        }
       
}
→ Ссылка