Unity c# - как отсортировать массив Resources.LoadAll <sprite>? - PullRequest
0 голосов
/ 10 марта 2020

image

Я создал спрайтовый массив с помощью Resources.LoadAll. Но Resources.LoadAll не загружает ресурсы, так как они видны на вкладке моего проекта

В списке вкладок проекта объекты отображаются как 1,2,3 .. Resources.LoadAll возвращает значения 1, 10, 100, 2 , 20, 200 ..

Как отсортировать массив спрайтов в порядке возрастания?

Я пробовал Array.Sort, но, похоже, замечание меняется

Sprite[] box = Resources.LoadAll<Sprite>("Images");
Array.Sort(box, delegate(Sprite x, Sprite y) { return x.name.CompareTo(y.name); });

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Сортировка массива на основе проанализированного целочисленного значения

var arr = box.OrderBy(n.name => int.Parse(n.name));
0 голосов
/ 10 марта 2020

Becuase name - это строка, которую вы сортируете по алфавиту - вам нужна сортировка по цифрам c.

Если name - это просто число, то конвертируйте его в int и сравните его:

Sprite[] box = Resources.LoadAll<Sprite>("Images");
Array.Sort(box, delegate(Sprite x, Sprite y) {return int.Parse(x.name).CompareTo(int.Parse(y.name)); });

Если в имени содержится число (т. е. там есть и алфавит c текст), вам нужно извлечь число, преобразовать его в int а затем сравните.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...