所以我正在编写一个分数列表,并希望所有分数都列在GUI中。
我有string[]
所有分数,所以我使用了
foreach(string score in scores) {
y = y + 60f;
GUI.Label(new Rect(0, y, 100, 20), score);
}
但现在每个GUI.label都会被移动,而不仅仅是新的。因此,如果它以第3分为例,则每个对象都在180f。
答案 0 :(得分:1)
使用Text
组件在屏幕上显示文字。避免任何需要GUI.Label
或OnGUI
功能的内容。您可以了解有关Unity的用户界面here的更多信息。
要回答您的问题,您可以使用多个 Text
组件,在Horizontal Layout Group
和Layout Element
的帮助下显示字符串数组中的每个值组件。你可以通过Google搜索来了解这些工作方式。
OR
您还可以将一个 Text
组件与“\r\n
”组合使用,然后将所有字符串连接并显示到该Text
组件。 “\r\n
”用于将每个文本移动到新行。
public Text textScore;
public string[] scores;
void Start()
{
textScore.horizontalOverflow = HorizontalWrapMode.Overflow;
textScore.verticalOverflow = VerticalWrapMode.Overflow;
foreach (string score in scores)
{
//Add new Score
textScore.text = textScore.text + score;
//Add new Line
textScore.text = textScore.text + "\r\n";
//OR (Do both one one line)
//textScore.text = textScore.text + score + "\r\n";
}
}
如果您希望每个文本之间有更多空格,则可以在每个循环中添加任意数量的“\r\n
”。例如,textScore.text = textScore.text + score + "\r\n\r\n\r\n\r\n\r\n\r\n";
。