Как правило, в сообщении об ошибке сказано все:
GetComponent
возвращает только компонент, присоединенный к такой же GameObject
как ваш скрипт.
Но у вашего robo2
нет меня sh и, следовательно, также нет Renderer
.
То, что вы скорее хотите сделать в вашем случае, будет использовать GetComponentsInChildren
, который скорее возвращает все соответствующие компоненты, прикрепленные к самому GameObject
, к которому прикреплен ваш скрипт, или к любому дочернему объекту, вложенному в него рекурсивно
void Start()
{
// pass true in order to also include disabled or inactive child Renderer
foreach(var rend in GetComponentsInChildren<Renderer>(true))
{
rend.material.color = colorStart;
}
}