unity GridLayoutGroup子级忽略调整大小
Unity GridLayoutGroup children ignoring resizing
任何人都可以解释为什么,在编辑器中我得到:
同时,在我的 Galaxy S6 上,我得到:
我的 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 教程电影,以及一些关于 'new' UI 工具的博客文章, 但物理设备上的尺寸没有任何变化,编辑器中似乎没有任何变化,因为它保持不变。
我确定我在做一些愚蠢的事情,但我已经用尽了所有途径,希望之前有人遇到过这种奇怪的事情。
最后想通了。是由于父对象缩放子元素(基于我假设的屏幕space),这在这种情况下适得其反。我的解决方法:
emptyCell.GetComponent<RectTransform>().localScale = Vector3.one;
...是我自己手动覆盖缩放比例,现在它在所有设备上都能很好地工作。希望这对以后的人有所帮助:)
任何人都可以解释为什么,在编辑器中我得到:
同时,在我的 Galaxy S6 上,我得到:
我的 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 教程电影,以及一些关于 'new' UI 工具的博客文章, 但物理设备上的尺寸没有任何变化,编辑器中似乎没有任何变化,因为它保持不变。
我确定我在做一些愚蠢的事情,但我已经用尽了所有途径,希望之前有人遇到过这种奇怪的事情。
最后想通了。是由于父对象缩放子元素(基于我假设的屏幕space),这在这种情况下适得其反。我的解决方法:
emptyCell.GetComponent<RectTransform>().localScale = Vector3.one;
...是我自己手动覆盖缩放比例,现在它在所有设备上都能很好地工作。希望这对以后的人有所帮助:)