в Unity3D Я хочу создать куб, используя шесть четырехугольников. Каждый из четырехугольников должен иметь различный материал.
Когда я создаю куб вручную и назначаю материалы квадам также вручную, все работает нормально, когда я запускаю его в редакторе, или использую Unity Remote 5, или когда я собираюпроект на устройстве.
Но когда я создаю куб программным способом, материал не отображается ни на устройстве Android, ни в редакторе. Это синий или белый (ни один из материальных цветов, которые я назначил). Но, по словам инспектора, для сгенерированных четырехугольников назначены правильные материалы.
Код, который создает куб и назначает материал, находится в методе Start (). Он также работал нормально, когда я создал новый пустой проект и программно создал только один квад с материалом.
Вот код, который я использую для создания квадов:
Quaternion parentRotation = parent.localRotation;
parent.localRotation = Quaternion.Euler(0, 0, 0);
var quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
quad.GetComponent<Transform>().position = GetQuadPosition(parent, game.GameSize, x, y, parent.position.z);
quad.GetComponent<Transform>().localRotation = Quaternion.Euler(0, 0, 0);
quad.GetComponent<Transform>().localScale = GetQuadSize(parent, game.GameSize, x, y);
quad.GetComponent<Transform>().SetParent(parent);
MaterialType materialType = cubeTransform.materialType;
Material material = cubeMaterials.Single(q => q.materialType.Equals(materialType)).material;
quad.GetComponent<MeshRenderer>().material = material;
parent.localRotation = parentRotation;
Чтобы объяснить некоторые изкод, куб - это пустой игровой объект, состоящий из шести пустых игровых объектов, для которых вращение и положение установлены в том порядке, в каком они должны быть, и к каждой стороне добавляются квады (на одной стороне куба больше квадратов).
Код не отполирован ..