任何人都可以解释为什么,在编辑器中,我得到:团结GridLayoutGroup孩子忽略调整
同时,我的银河S6,我得到:
我Panel
UI元素(它是父级)具有GridLayoutGroup
组件,以及ContentSizeFitter
。子元素具有柔性宽度/高度为120的LayoutElement
组件,并且所有锚点都设置为在所有方向上拉伸。
Canvas
设置为屏幕尺寸比例,参考水平为320x480,屏幕模式为匹配高度。
无论方格的数量是多少(动态的),编辑器都可以完美调整父级内的子元素的大小,但是我的设备使它们变得很小。我很困惑。
有脚本内没有大小或锚的设置,纯粹是实例化和家长的任务,像这样:
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教程电影以及一些关于'新'UI工具的博客文章,但没有改变物理设备上的尺寸,并且编辑器中没有任何改变,因为它仍然是一样的。
我确定我在做一些愚蠢的事情,但我已经用尽了所有的途径,并希望以前有人遇到过这种古怪。
你也可以通过'emptyCell.transform.SetParent(cellHolder,false);'来解决这个问题。发生什么事情是,当您使用SetParent时,即使在父母身份的情况下,它也会尽可能保持与世界空间相同的大小。它通过修改localScale来实现。一旦你传递了这个'false',它就会保持localScale数字原样(即保持1,1,1) – Daniel