Unity GridLayoutGroup子级忽略调整大小

时间:2015-09-23 20:33:47

标签: unity3d unityscript unity3d-gui

任何人都可以在编辑器中解释原因:

enter image description here

同时,在我的Galaxy S6上,我得到了:

enter image description here

我的Panel UI元素(父元素)包含GridLayoutGroup组件以及ContentSizeFitter。子元素具有LayoutElement组件,其FlexibleWidth / Height为120,并且所有锚点都设置为在所有方向上伸展。

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工具的博客文章,但没有任何内容会改变物理设备的尺寸,以及似乎在编辑器中没有任何改变,因为它保持不变。

我确定我做的事情很愚蠢,但我已经筋疲力尽了,并且希望有人之前遇到过这种奇怪的事情。

1 个答案:

答案 0 :(得分:5)

最后想出来了。是由于父对象缩放子元素(基于我假设的屏幕空间),这在这种情况下适得其反。我的工作:

emptyCell.GetComponent<RectTransform>().localScale = Vector3.one;

...是我自己手动覆盖缩放比例,它现在在所有设备上都很可爱。希望这可以帮助将来的某个人:)