Очень простой код - Unity 3d - IndexOutOfRangeException: индекс находился за пределами массива - PullRequest
0 голосов
/ 18 февраля 2020
public class Button : MonoBehaviour {
    public Material[] mButton;
    Renderer rend;

    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(mButton[0]);
        rend = GetComponent<Renderer>();
        rend.sharedMaterial = mButton[0];
    }

Я получаю ошибку «Индекс вне границ» в строке rend.sharedMaterial = mButton [0]. Это массив из двух элементов. У меня есть разные материалы в каждом из двух мест массива. Debug.Log точно показывает, какой материал находится в местоположении [0].

Есть идеи? Заранее спасибо.

1 Ответ

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

Комментарий, опубликованный @PhilippLenssen, решил эту проблему.

Его комментарий: «Не могли бы вы еще раз проверить, что ошибка происходит в строке rend.sharedMaterial, а не в строке Debug.Log? (Например, иногда случается так, что один случайным образом назначается один и тот же сценарий двум разным объектам gameObjects - у одного теперь будет пустой список материалов, что приведет к ошибке в строке Debug.Log.) "

Как только я закомментировал Debug.Log(mButton[0]); строка, ошибка очищена.

...