В моем проекте единства у меня есть сборный дом со многими дочерними объектами. Если я нажму на кнопку, я хочу, чтобы некоторые дочерние объекты из префаба изменили свой цвет. К сожалению, с моим кодом ничего не происходит.
Это мой код:
public class ColorChanger : MonoBehaviour
{
public GameObject preFabParent;
public GameObject preFabChildTarget
public Material newColor;
Renderer[] prefabChildrenParent, prefabChildren;
bool changePrefabColor;
void Start()
{
prefabChildrenParent = preFabParent.GetComponentsInChildren<Renderer>();
prefabChildren = preFabChildTarget.GetComponentsInChildren<Renderer>();
}
void Update()
{
// bool is changed by a button click:
if(changePrefabColor) ChangeColor();
}
void ChangeColor()
{
// Now I want that all the child objects from the prefabChildTarget get the new color.
foreach(Renderer child in prefabChildren)
{
var mats = new Material[child.sharedMaterials.Length];
for(var j = 0; j < child.sharedMaterials.Length, j++)
{
mats[j] = newColor;
}
child.sharedMaterials = mats;
}
}
}
Что мне нужно изменить, чтобы мой код работал? К сожалению, я не смог найти решение, которое работает для меня.