#c# #unity3d
#c# #unity3d
Вопрос:
Как мне автоматически назначить длину массива на основе длины другого и вставить в него строку? Таким образом, чтобы в цикле for, когда я копирую строку, она автоматически копировалась во все строки массива.
public string[] ArrayOfStrings;
public Image[] images;
void Start()
{
for(int i = 0; i < images.Length; i )
{
ArrayOfStrings[i] = "Testing String";
}
}
Комментарии:
1. Если ваши массивы всегда имеют одно и то же значение. Вы могли бы выполнить этот цикл во время редактирования, используя метод
OnValidate()
unity . Рекомендуется выполнять вычисления в режиме редактора, когда это возможно. Не забудьте вызватьUnityEditor.EditorUtility.SetDirty(this)
после измененияOnValidation
метода принудительную сериализацию вашего gameobject.
Ответ №1:
ArrayOfStrings = new string[images.Length];
Затем вы можете выполнить цикл
for(int i = 0; i < ArrayOfStrings.Length; i )
{
ArrayOfStrings[i] = "Testing String";
}
Или вы можете использовать List
и linq . Например :
public List<string> ArrayOfStrings;
public List<Image> Images;
void Start()
{
ArrayOfStrings.AddRange(Images.Select(x => $"the text you want for {x}").ToList());
}
Комментарии:
1. Да, я планировал перейти к списку. Почему список лучше, чем массив?
2. Список можно легко расширить, потому что вам не нужно указывать длину списка при создании экземпляра. Но это зависит от того, что вы хотите сделать. Массив может иметь лучшую производительность, но если вы не производите огромные вычисления в цикле при методе обновления. Было бы приемлемо использовать список 99% времени. (Только мое мнение) И мне нравится использовать linq для обработки списка, например, выбора данных с условиями или преобразования данных и так далее.
3. » Было бы приемлемо использовать список в 99% случаев » Не согласен; вы бы использовали
List<T>
только в том случае, если вам требуется коллекция с изменяемым размером. Поведение является основным фактором, а не производительность.4. Или, другими словами, используйте максимально возможный тип, который удовлетворяет вашим требованиям.
5. @JohnathanBarclay : Хорошо, вы высказали точку зрения. Вот почему я написал, что это всего лишь мое мнение. Потому что при моем обычном использовании collection мне часто нужна изменяемая и простая в управлении коллекция. Я не мог сказать ни слова о своей привычке, но ваш комментарий идеален. Спасибо