Добрый день!
Столкнулся с такой фигнёй:
Создаю меш ручками из вершин в OnEnable.
_mesh = new Mesh();
gameObject.AddComponent<MeshFilter>().mesh = _mesh;
_renderer = gameObject.AddComponent<MeshRenderer>();
Далее вставляю буфера вершин/треугольников, и — главное — выставляю цвет материалу новоиспечённого рендерера:
_renderer.material.color = new Color(1,0,0);
Проверяю Debug.Log'ом — всё верно. 1,0,0,1 (красный).
Смотрю, что в игре делается. А в игре оно белое.
Проверяю тем же Debug.Log'ом material.color, но уже в Update. А там 1,1,1,1.
То есть в какой-то момент между созданием рендерера и собственно игрой цвет материала вновь становится белым.
Вотзефак?
Выставление цвета работает, если его прописать в Start().
Так что решается вопрос тем, что переносим в Start это дело.
Но хотелось бы разобраться в природе этого бага! Не люблю, когда что-то делается, а я даже не знаю, почему. Кто тут знаток, который может объяснить сей феномен?