Unity GridLayoutGroup子级忽略调整大小

fan*_*tly 1 unity-game-engine unityscript unity3d-gui

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

在此输入图像描述

而在我的Galaxy S6上,我得到:

在此输入图像描述

我的PanelUI元素(它是父元素)有GridLayoutGroup组件,以及ContentSizeFitter.子元素具有LayoutElementFlexibleWidth/Height为120 的组件,并且所有锚点都设置为在所有方向上伸展.

Canvas被设定为屏幕尺寸按比例绘制,为320x480的参考RES和屏幕模式是匹配的高度.

无论正方形的数量(动态)如何,编辑器都可以完美地调整父元素中的子元素,但是我的设备使它们很小.我真的很困惑.

脚本中没有大小或锚点的设置,纯粹是实例化和父类的赋值,如下所示:

    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);
    }
Run Code Online (Sandbox Code Playgroud)

我还检查了所有与以下相关的文档:http://docs.unity3d.com/Manual/comp-UIAutoLayout.html - 甚至UI教程电影,以及一些关于'新'UI工具的博客文章,但没有更改物理设备上的维度,并且似乎在编辑器中没有任何更改,因为它保持不变.

我确定我做的事情很傻,但我已经筋疲力尽了所有的途径,希望有人之前遇到过这种奇怪的事情.

fan*_*tly 5

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

emptyCell.GetComponent<RectTransform>().localScale = Vector3.one;
Run Code Online (Sandbox Code Playgroud)

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