【发布时间】:2021-11-15 09:15:19
【问题描述】:
这是我的问题: 我想让一堆文本游戏对象水平地均匀分布在屏幕上。 因此,我采用了一个 Layout-Group 并将其添加到一个面板上,该面板在屏幕上伸展,具有以下设置: Panel Settings
(Panel 上的 Layout Element 在这里我认为并不重要,但 Panel 本身是由另一个 Object 控制以在屏幕上伸展的)
现在,我通过脚本添加文本游戏对象。看起来是这样的:
days[i].transform.SetParent(GameObject.Find("Day Panel").transform);
days[i].AddComponent<Text>();
days[i].transform.GetComponent<Text>().font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
days[i].transform.GetComponent<Text>().fontSize = 25;
days[i].transform.GetComponent<Text>().color = Color.black;
days[i].transform.GetComponent<Text>().alignment = TextAnchor.UpperCenter;
days[i].transform.GetComponent<Text>().text = shownDates[i].Day.ToString();
days[i].transform.localScale = new Vector3(1, 1, 1);
days[i].transform.localPosition = new Vector3(0, 0, 0);
现在我有一个问题,文本游戏对象的宽度受我与它们一起显示的字符串长度的影响。因此,如果一个文本游戏对象中有一个 3 字符长的字符串,它会比它旁边的文本游戏对象和一个 1 字符长的字符串更宽。但我需要在文本对象之间“公平”分配宽度,独立于内部。
希望你能帮助我,谢谢:D
【问题讨论】:
-
不是一个很好的解决方案,但您可以将
LayoutElemenet附加到每个文本对象,并根据子项的数量给出一个偶数分割的最小宽度。另一个选项不是直接将大小不同的文本对象作为子面板,而是将文本设置为面板的子项。面板将均匀地填充空间,并且这些面板中的文本可以是任意大小。