在unity3d中将字符串转换为int时发生C#错误

本文关键字:错误 int unity3d 字符串 转换 | 更新日期: 2023-09-27 18:14:29

我在使用C#的Unity中遇到问题,我正试图创建一个包含所有信息的List或Array。

0000、00010002等

我想把它放在一个列表/数组中,并使用这些信息在角色选择屏幕上实例化一个模型。然而,这是代码中一切都开始变得一团糟的部分。

我只是想读出这些数字,然后把它们加到清单上。

    void Start () {
    gestureListener = this.GetComponent<GestureListener>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        List<string> mylist = new List<string>(new string[b]);
        Debug.Log (mylist);
        break;
    }
}

我得到这个错误:

error CS0029: Cannot implicitly convert type `string' to `int'

错误发生在第5行,但对我来说,这似乎是一条不可替代的行。。。

变量B是一个string,所以我不知道为什么列表会把它看作int

如果你能帮忙,请告诉我,非常感谢!

在unity3d中将字符串转换为int时发生C#错误

如果您试图实例化一个列表,然后向该列表中添加元素,那么您就错了。您当前正在实例化一个新列表,每次迭代时只使用一个元素。换句话说,您并不是在使用列表,只是在每次循环时创建一个新列表。

在循环外创建字符串列表,然后从循环内添加到该列表中。

您应该有这样的东西来填充列表。

void Start() 
{
    List<string> mylist = new List<string>();
    gestureListener = this.GetComponent<GestureListener>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        myList.Add(b);
        Debug.Log (mylist);
        break;
    }
}

话虽如此,在for-loop结束时,您的myList将有一个models集合。然后,您可以迭代该集合以查看您推送的所有元素。

foreach(var item in mylist)
{
   //Do whatever with each Item.
}

如果您需要更多示例,请查看DotNetPerls列表示例以及这个视频例子中的Unity。

void Start () {
    gestureListener = this.GetComponent<GestureListener>();
    List<string> myList = new List<string>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        myList.Add(b);
        Debug.Log (mylist);
        break;
    }
    //myList is populated with all the numberOfModels here.
}

不要在循环中创建新列表。按照您现在的做法,您正在尝试创建一个新的列表(无论如何都要扔掉(,该列表具有越来越大的空字符串数组。例如,如果numberOfModels为100,则会有100!列表中的空字符串元素(如果已保存(。

只需在for循环外创建一个列表,然后将字符串b添加到循环内的列表中。