К игровому объекту «robot2» не прикреплено «Renderer», но скрипт пытается получить к нему доступ - PullRequest
0 голосов
/ 18 февраля 2020

MissingComponentException: к игровому объекту robot2 не прикреплен 'Renderer', но скрипт пытается получить к нему доступ. Возможно, вам нужно добавить рендерер к игровому объекту «robot2». Или ваш сценарий должен проверить, подключен ли компонент перед его использованием. UnityEngine.Renderer.get_material () (в <94c5f4c38cdc42d2b006f8badef04394>: 0) ColorChange.Start () (в Assets / ColorChange.cs: 21)

У меня есть робот fbx2, в моей программе Unity были импортированы как актив. Я хочу изменить цвет при запуске программы, но я получаю это сообщение. Как я мог отрендерить мой fbx в Unity?

enter image description here

public Color colorStart = Color.red;
public Color colorEnd = Color.green;
public Renderer rend;


// Start is called before the first frame update
void Start()
{
    rend = GetComponent<Renderer>();
    rend.material.color = colorStart;
}

1 Ответ

0 голосов
/ 18 февраля 2020

Как правило, в сообщении об ошибке сказано все:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...