Unity LineRenderer - невозможно получить ссылку

У меня есть сцена Unity с LineRenderer на верхнем уровне (то есть не дочерним элементом какого-либо компонента), которая называется «LineOfFlight».

Я пытаюсь получить ссылку на него программно (не через редактор):

    LineRenderer
            lineOfFlight;
    GameObject
            tmp = GameObject.Find("LineOfFlight");

    if (tmp != null)
        lineOfFlight = tmp.GetComponent<LineRenderer>();

    Debug.Log("lineOfFlight=" + (lineOfFlight == null ? "null" : "not null") + ", tmp=" + (tmp == null ? "null" : tmp.ToString()));

В журнале отладки tmp отображается как «LineOfFlight (UnityEngine.GameObject)», что выглядит нормально, но lineOfFlight отображается как «null». Т.е. не смог разжиться компонентом.

Я делаю все это в Awake(). Что я сделал не так?


person nmw01223    schedule 18.06.2020    source источник
comment
не могли бы вы включить полный код, поскольку он у вас есть в вашем файле, ничего не редактируя, включая функции, в которых они находятся, и т. д. прямо сейчас у нас есть неполная информация по вашей проблеме, так как сам код, похоже, работает для меня.   -  person Remy    schedule 18.06.2020


Ответы (1)


Где-то в части вашего кода есть ошибка, которую вы не включили в свой вопрос, поскольку сам код работает при правильном форматировании и установлен в функциях.

В качестве альтернативы ваш GameObject под названием «LineOfFlight» может иметь опечатку в своем имени или в него не добавлен компонент LineRenderer.

using UnityEngine;

public class LineRendererText : MonoBehaviour
{

    LineRenderer lineOfFlight = null;

    private void Start()
    {
        GameObject tmp = GameObject.Find("LineOfFlight");

        if (tmp != null)
            lineOfFlight = tmp.GetComponent<LineRenderer>();

        Debug.Log("lineOfFlight=" + (lineOfFlight == null ? "null" : "not null") + ", tmp=" + (tmp == null ? "null" : tmp.ToString()));
    }
}

Результат при запуске

person Remy    schedule 18.06.2020