1

谁能解释为什么,在编辑器中我得到:

在此处输入图像描述

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

在此处输入图像描述

我的PanelUI 元素(它是父元素)具有GridLayoutGroup组件,以及ContentSizeFitter. 子元素有LayoutElement一个灵活宽度/高度为 120 的组件,并且所有锚点都设置为在所有方向上拉伸。

设置为 Scale with Screen size ,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 工具的博客文章,但没有更改物理设备上的尺寸,并且在编辑器中似乎没有任何改变,因为它保持不变。

我确定我在做一些愚蠢的事情,但我已经用尽了所有途径,并希望有人以前遇到过这种奇怪的事情。

4

1 回答 1

6

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

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

...是我自己手动覆盖缩放,现在它在所有设备上都很好用。希望这对将来的人有所帮助:)

于 2015-09-26T10:44:20.507 回答