通过foreach循环改变GUI的位置



所以我正在编程一名生物群,并希望将所有分数列在GUI中。我有一个带有所有分数的string[],所以我使用了

foreach(string score in scores) { 
y = y + 60f;
GUI.Label(new Rect(0, y, 100, 20), score); 
}

,但是现在每个gui.label都被移动,而不仅仅是新的。因此,如果以第三分为例,每个对象为180f。

使用Text组件在屏幕上显示文本。避免使用GUI.LabelOnGUI功能的任何内容。您可以在此处了解有关Unity的UI的更多信息。

要回答您的问题,您可以在Horizontal Layout GroupLayout Element组件的帮助下使用 Text组件在字符串数组中显示每个值。您可以通过谷歌搜索它们如何工作。

您还可以在" rn"的组合中使用 Text组件,然后将所有字符串显示为一个Text组件。" rn"用于将每个文本移至新行。

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 + "rn";
        //OR (Do both one one line)
        //textScore.text = textScore.text + score + "rn";
    }
}

如果您想要每个文本之间的更多空间,则可以在每个循环中添加尽可能多的" rn"。例如,textScore.text = textScore.text + score + "rnrnrnrnrnrn";

最新更新