Прохожу уроки по Unity и столкнулся с такой проблемой:
private Rigidbody2D rigidBody;
private Renderer renders;
void Start()
{
rigidBody = GetComponent<Rigidbody2D>();
renders = GetComponent<Renderer>();
if (isLooping)
{
for(int i = 0; i < transform.childCount; i++)
{
Transform child = transform.GetChild(i);
if (child.renderer != null)
{
backgroundPart.Add(child);
}
}
}
}
В последнем if на 'renderer' вылазит ошибка: Component.renderer является устаревшим, используйте GetComponent(), сделал по аналогии с rigidbody2D, но если заменить 'renderer' не 'renders' тогда появляется другая ошибка: Transform не содержит определения для renders. В чем может быть причина? До: http://prntscr.com/l9qe51 После: http://prntscr.com/l9qe9f
Метод GetComponent<T>() - это метод класса MonoBehaviour. Он ищет на объекте, на котором висит, указанный вместо T класс.
Другими словами, в вашем случае вызывая renders = GetComponent<Renderer>(); - вы ищите на текущем объекте компонент Renderer и назначаете его в приватную переменную renders.
После этого вы начинаете в цикле перебирать все дочерние объекты. Вы получаете компонент Transform объекта в Transform child = transform.GetChild(i); после чего спрашиваете if (child.renderer != null). Т.е. вы спрашиваете у класса Transform не является ли его публичное поле renderer пустым.
Это устаревший код, который будет скоро выпилен и вам советуют использовать вместо него GetComponent<T>(). В вашем случае это бы выглядело следующим образом:
Transform child = transform.GetChild(i);
var childRenderer = child.GetComponent<Renderer>();
if (childRenderer != null)
{
backgroundPart.Add(child);
}
т.е. у каждого дочернего объекта вы пытаетесь через метод GetComponent() найти Renderer, если результат не равен null - объект добавляется в список.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости