вместо Renderer.sharedMaterial
Изменение sharedMaterial
изменит внешний вид всех объектов с использованием этого материала, и измените настройки материала , которые также хранятся в проекте.
Не рекомендуется изменять материалы, возвращаемые sharedMaterial
. Если вы хотите изменить материал рендерера, используйте material
.
вместо этого используйте Renderer.material
Изменение material
изменит материал только для этого объекта.
Если материал используется любыми другими средствами визуализации, он клонирует общий материал и начинает использовать его с этого момента.
Также проверьте свои циклы .. некоторые вещи там кажутся странными, например,
for (int j = 0; j < someTextureArray.Length; j++)
{
if (j == currentTextureIndex)
{
someRenderer[i].material.mainTexture = someTextureArray[j];
}
}
кажется просто очень сложным способом простого написания
someRenderer[i].material.mainTexture = someTextureArray[currentTextureIndex];
Для всех ваших методов переключения: обратите внимание, что самое простое решение для обхода положительного счетчика для индексов в массиве, которое вы можете просто сделать
currentIndex = (currentIndex + 1) % accordingArray.Length;