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 шт):
Вам не нужно повторно запрашивать 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>)
}
}
}