2015-09-25 2 views
-1

У меня проблема с Unity с C#, я пытаюсь создать список или массив, который имеет всю необходимую мне информацию.Ошибка C# с преобразованием строки в int в unity3d

0000, 0001,0002, etc.

Я хочу поместить это в список/массив и использовать эту информацию для создания модели на экране выбора персонажа. Тем не менее, это часть кода, где все начинает перепутаться.

Я просто пытаюсь зачитать цифры и добавить их в список.

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 является a string, поэтому я не знаю, почему списки видят его как int.

Пожалуйста, дайте мне знать, если вы можете помочь, высоко цените!

+3

Проблема с этой частью: 'new string [b]' –

+1

@Dmitry 'b' - это строка, которая также не будет работать. Вы имели в виду 'i'? –

+1

, потому что, если я заменяю новую строку [b] только b, она дает мне эту ошибку: ошибка CS1502: лучшее перегруженное соответствие метода для 'System.Collections.Generic.List .List (System.Collections.Generic.IEnumerable ) 'имеет некоторые недопустимые аргументы – niels

ответ

2

Если вы пытаетесь создать экземпляр списка, а затем добавить элементы в этот список, вы ошиблись. В настоящее время вы создаете новый список только одним элементом при каждом повторе. Другими словами, вы не помещаете список в список, вы просто создаете новый каждый раз, когда вы зацикливаете.

Создайте свой список строк вне цикла, а затем добавьте его изнутри цикла.

У вас должно быть что-то подобное, чтобы заполнить список.

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 List Examples и это video example с Unity в виду.

+0

Я работаю с kinect, и я пытаюсь добиться выбора персонажа, который реагирует на движение салфетки, он должен создать экземпляр следующего числа каждый раз, когда я запускаю forloop. – niels

+0

Мой код как Рон Бейер, что заставило вас принять этот ответ, если это вам не поможет? Ваша коллекция чисел будет создана до ввода цикла, внутри цикла вы просто добавляете номер в коллекцию, а затем выходите из цикла, что логика не имеет смысла. Что именно вы пытаетесь сделать здесь, попытайтесь сломать его лучше, и, возможно, мы сможем помочь вам лучше. – Dayan

+0

Я почти закончил с этим, но вкратце, я использовал ваш ответ, потому что после того, как я вынул, как я хочу, чтобы код зациклился, я пришел к выводу, что ваш лучший ответ, поэтому я принимаю ваш за этот случай. Я сделал свой код так, чтобы этот промах взял все числа моделей, которые находятся в моей иерархии, и помещает их в список. , тогда я использовал вторую переменную для подсчета пробелов и использовал этот номер, чтобы выбрать номер из форлупа, который позволяет мне получать нужную модель каждый раз, с автоматической частью в ней, которая проверяет наличие новых моделей, поэтому я не имею добавлять все вручную каждый раз – niels

2
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 в список внутри цикла.

+0

благодарю вас за ваш ответ, так как он заставил меня посмотреть, что мне действительно нужно. – niels

Смежные вопросы