1Frosty
@1Frosty
Познаю новое

Как добавить в массив элементы?

Доброго времени суток. Мне необходимо добавить в массив новые элементы.
Вот код:
public class Game : MonoBehaviour {
    public CategoryList[] category = new CategoryList[9];
    public WordsList[] words = new WordsList[100];
}

    void Start() {
        for (int w = 0; w < words.Length; w++)
        {
            words[w].word = LangSystem.lng.sports[w];
            words[w].word = LangSystem.lng.geo[w]; // ТАКАЯ КОНСТРУКЦИЯ ЗАМЕНЯЕТ МАССИВ words[w].word. А МНЕ НУЖНО, ЧТОБЫ ЭТИ ЭЛЕМЕНТЫ ТУДА ДОБАВЛЯЛИСЬ
            Debug.Log(words[w].word);
       }

    [System.Serializable]
    public class CategoryList
    {
        public string[] catName = new string[9];
        public WordsList[] words;
    }

[System.Serializable]
    public class WordsList
    {
        public string word;
    }

В LangSystem.lng.geo[w] находятся фразы из json. Как не перезаписывать этот массив, а добавить туда элементы ?
  • Вопрос задан
  • 970 просмотров
Пригласить эксперта
Ответы на вопрос 3
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Либо используйте Array.Resize:
int oldLength = words.Length;
Array.Resize(ref words, oldLength + newWords.Length);
for (int i = 0; i < newWords.Length; i++)
{
    words[i + oldLength] = newWords[i];
}

Либо вместо массива берите List:
foreach (var newWord in newWords)
{
    words.Add(newWord);
}
// Или так
words.AddRange(newWords);
Ответ написан
1Frosty
@1Frosty Автор вопроса
Познаю новое
Пробую использовать листы, помогите пожалуйста. Скидываю процедуру:
wordList = new List<object>(words); // Создаём лист
        // Проверяем какие категории отмечены
        if (toggleSports.isOn == true) {
            for (int w = 0; w < LangSystem.lng.sports.Length; w++) words[w].word = LangSystem.lng.sports[w]; // ПРОХОЖУ ПО РАЗМЕРУ МАССИВА и добавляю туда фразы из lng.sports
            wordListSports = new List<object>(words); // Создаю новый лист
            wordList.AddRange(wordListSports); // Соединяю его с основным
        }
        if (toggleGeo.isOn == true)
        {
            for (int w = 0; w < LangSystem.lng.geo.Length; w++) words[w].word = LangSystem.lng.geo[w];
            wordListGeo = new List<object>(words);
            wordList.AddRange(wordListGeo); // Добавляю фразы в основной лист
        }

Выходит так, что в wordList только элементы из wordListGeo, а wordListSports просто нет, но ведь я же добавляю их вот так:
wordListSports = new List<object>(words); // Создаю новый лист
 wordList.AddRange(wordListSports); // Соединяю его с основным

Что я делаю не так? подскажите пожалуйста. Заранее огромное спасибо.
Ответ написан
fedorez
@fedorez
Хатуль мадан
Зачем вам массив? Юзайте список, удобнее. Если вам потом нужно будет взаимодействовать с кодом, которому нужен массив - всегда есть ToArray.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы