хочу добавить объект в список когда на него падает райкаст но юнити выдает ошибку object reference not set to an instance of an object

вот мой код

    public GameObject interactText;
    public Transform teleportPosition;
    private List<GameObject> eatDelete;
    private RaycastHit hitData;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        Ray ray = new Ray(transform.position, transform.forward);
        if (Physics.Raycast(ray, out hitData, 4.1f))
        {
            if (hitData.collider.tag == "client")
            {
                interactText.SetActive(true);
                Client();
            }
            else if (hitData.collider.tag == "eat")
            {
                interactText.SetActive(true);
                Eat_Teleport();
            }
            else 
            {
                interactText.SetActive(false);
            }
        }
        else
        {
            interactText.SetActive(false);
        }
    }

    void Client()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            if (interactText.activeInHierarchy)
            {
                for (int i=0; i < eatDelete.Count;i++)
                {
                    Destroy(eatDelete[i]);
                }
                eatDelete = new List<GameObject>();
            }
        }
    }
    void Eat_Teleport()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            if (interactText.activeInHierarchy)
            {
                hitData.transform.position = teleportPosition.transform.position;
                hitData.transform.rotation = new Quaternion(0, 0, 0, 0);
                eatDelete.Add(hitData.collider.gameObject);
            }
        }
    }

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

Автор решения: rotabor

У вас eatDelete инициализируется в Client (единственная показанная инициализация, и то там eatDelete используется раньше, чем инициализируется), а объекты в него добавляются в Eat_Teleport.

Код не гарантирует, что Client будет обязательно выполнен перед Eat_Teleport. Более того, в Client произойдёт точно такая же ошибка на "eatDelete.Count". Сделайте так, чтобы eatDelete был гарантированно инициализирован перед вызовом Eat_Teleport, а также перед любым использованием вообще.

→ Ссылка