如何在Unity上的TextMesh上打印数组中的所有位置?

时间:2017-10-20 17:39:02

标签: c# arrays string unity3d

我有一个链接到公共TextMesh的3D文本。我希望我的公共字符串数组上的所有元素都显示在该3D文本上。当我尝试在for循环上运行它时,它会遍历我的数组中的所有字符串并打印最后一个位置。我需要它做的是在TextMesh中显示我的数组中的所有字符串。我试图用foreach循环来做,但结果相同。

这就是我的尝试:

for (int i = 0; i < myShoppingList.Length; i++){
        listText.text = (myShoppingList[i] + "\n");
    }

当我点击播放时,我只能在3DText中看到我的数组中的最后一个位置(虽然我知道它已经贯穿了所有这些)。这是我试过的foreach循环,并得到了相同的结果:

foreach (string item in myShoppingList) {
        listText.text = (item + "\n");
    }

基本上我需要的是一种方式来说明

listText.text = (myShoppingList[0] + "\n" + myShoppingList[1] + "\n" + myShoppingList[2] + etc.)

我可以这样做,但是如果我想在我的列表中添加一个项目(我的字符串数组),我将不得不进入这个代码并在此结束时添加另一个位置。所以也许有一种聪明的方法可以做到这一点,我没有看到!

有什么想法?谢谢你的时间!!!

2 个答案:

答案 0 :(得分:0)

=会将变量分配给新值。它正在用当前元素替换旧文本。

相反,您想要追加它。这是+运营商。

您可以将新文本附加到listText.text的现有内容,并将结果分配给listText.text本身(listText.text = listText.text + moreString),或者更方便地使用{{1 }}运算符,with是附加的简写,后跟分配给self(+=)。

答案 1 :(得分:0)

或者,您可以使用string.Join()方法而不是使用循环,该方法将使用IEnumerable或数组,并使用任何字符串连接所有项目(如您的情况下的换行符)。

例如:

listText.Text = string.Join("\n", myShoppingList);