@Misuta

Как изменить цвет объекта из скрипта?

Нубский вопрос, но чет не могу понять в чем проблема..
Нужно сделать так, что бы периодически менялся цвет появляющихся объектов. Спавню различные объекты по нажатию ЛКМ, и даю ссылку на префаб объекта в этот скрипт (это тестовый скрипт):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Test : MonoBehaviour
{
    public GameObject Cube;
    public int ColorIndex = 1;
 
    void FixedUpdate()
    {
        if(ColorIndex == 1)
        {
            Cube.GetComponent<Renderer>().material.color = Color.red;
            ColorIndex++;
        }
        else if(ColorIndex == 2)
        {
            Cube.GetComponent<Renderer>().material.color = Color.green;
            ColorIndex++;
        }
        else if(ColorIndex == 3)
        {
            Cube.GetComponent<Renderer>().material.color = Color.blue;
            ColorIndex-=2;
        }
    }
}


Но получаю такую вот ошибку:
NullReferenceException: Object reference not set to an instance of an object
Test.FixedUpdate () (at Assets/Scripts/Test.cs:21)

В инспекторе поле непустое, проверял
Вроде я так делал раньше, и всё работало, но сейчас почему то не работает.
Как можно решить эту проблему?
  • Вопрос задан
  • 1423 просмотра
Решения вопроса 1
@Elsper
Плохо, что ты спрашиваешь вопрос с полностью выдуманным кодом.

"даю ссылку на префаб объекта в этот скрипт"
Надо давать ссылку на объект.

1) Или ищи тут. (Даешь ссылку или не тому объекту, или не на тот объект, или не даешь вовсе)
"Спавню различные объекты по нажатию ЛКМ, и даю ссылку на префаб объекта в этот скрипт"

2) Или вешай свой класс на префаб, не создавая промежуточный куб и обращайся сразу к GetComponent()
Только из апдейта его вытащи в Awake или Start например
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы