Может кто-нибудь объяснить, почему в редакторе я получаю:Unity GridLayoutGroup дети игнорируют изменение размера
время, на мой Galaxy S6, я получаю:
Мой Panel
UI элемент (который является родительским) имеет компонент GridLayoutGroup
, а также ContentSizeFitter
. У дочерних элементов есть компонент LayoutElement
с гибкостью ширины/высоты 120, и все анкеры устанавливаются на растяжение во всех направлениях.
Canvas
установлен в шкале с размером экрана, с эталонным разрешением 320x480, а режим экрана соответствует высоте.
Независимо от количества квадратов (что является динамическим) редактор прекрасно изменяет размеры дочерних элементов в родительском элементе, но мое устройство делает их крошечными. Я действительно смущен.
Там нет установки размеров или анкеров в сценарии, чисто Instantiate и назначение родителей, например, так:
for(int i=0; i < amount; i++)
{
GameObject emptyCell = (GameObject)Instantiate(emptyCellObject);
emptyCell.transform.SetParent(cellHolder);
emptyCell.GetComponent<RectTransform>().localPosition = new Vector3(0f, 0f, 0f);
emptyCells.Add(emptyCell);
}
Я также проверил все документы, связанные с: http://docs.unity3d.com/Manual/comp-UIAutoLayout.html - И даже UI а также некоторые сообщения в блоге о «новых» инструментах пользовательского интерфейса, но ничто не меняет размеры на физическом устройстве и, похоже, ничего не меняет в редакторе, так как это остается неизменным.
Я уверен, что я делаю что-то глупое, но я исчерпал все возможности и надеялся, что кто-то раньше столкнулся с этой странностью.
Вы также можете исправить это, выполнив 'emptyCell.transform.SetParent (cellHolder, false);'. Что происходит, так это то, что когда вы SetParent, он пытается сохранить тот же размер, что и в мировом пространстве, даже будучи родителем. Он делает это, изменяя localScale. Как только вы передадите этот 'false', он просто сохранит номера localScale, как они были (т. Е. Поддержит 1,1,1) вместо – Daniel