任何人都可以在编辑器中解释原因:
同时,在我的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教程电影,以及一些关于“新”UI工具的博客文章,但没有任何内容会改变物理设备的尺寸,以及似乎在编辑器中没有任何改变,因为它保持不变。
我确定我做的事情很愚蠢,但我已经筋疲力尽了,并且希望有人之前遇到过这种奇怪的事情。
答案 0 :(得分:5)
最后想出来了。是由于父对象缩放子元素(基于我假设的屏幕空间),这在这种情况下适得其反。我的工作:
emptyCell.GetComponent<RectTransform>().localScale = Vector3.one;
...是我自己手动覆盖缩放比例,它现在在所有设备上都很可爱。希望这可以帮助将来的某个人:)