-2

Есть карта, сгенерированная из перфаба(2д текстура), при создании поочередно дается название ( 1, 2....). Я хотел бы, чтобы мой игрок умел делать что-то с этими блоками. Функция, у персонажа:

public void click()
{
    RaycastHit2D rayHit;
    rayHit = Physics2D.Raycast(transform.position, transform.right);

    Map_Generation map  = rayHit.transform.gameObject.GetComponent<Map_Generation>();
    if(rayHit)
    {
        name = rayHit.collider.gameObject.name;
        map.search(name);
    }

А вот функция search, она висит на пустом объекте Map_Generation:

public void search(string name)
{
    ds =  GameObject.FindWithTag(name).gameObject;
    if (ds != null)
    {
        Destroy(ds);
        Debug.Log("Успех!");
    }
    else Debug.Log("Полный ноль!");
}

Эта функция не вызывается вообще, сразу пишет ошибку. Я не могу понять в чем дело. Коллайдер на префабе весит.

  • Вы пытаетесь разыменовать null. StackTrace исключения подскажет на какой строчке. Дальше выясняете почему в переменной был null. У вас скорее всего это map, потому что компонент на объект забыли повесить. Вообще когда видите исключение смотрите StackTrace, для этого их и делали чтобы ошибки находить. – trollingchar Jul 10 '19 at 14:43
  • 1
    А также здесь посмотрите – trollingchar Jul 10 '19 at 14:45

1 Answers1

-1

Решил проблему. Нужно было в скрипте игрока объявить вот так:

Map_Generation map = new Map_Generation();

Мб кому-то это будет полезным, наверное..