Итак, у меня есть набор целых чисел в списке
public List<int> numbers = new List<int>() { 3, 7, 6, 9, 8, 10, 11 }
, что я хочу сделать, это изменить эти числа так, чтобы они были упорядочены в диапазоне от 0 до 6, чтобы установить как siblingindexs.
, а затем изменится на
public List<int> newArrangedNumbers = new List<int>() {0, 2, 1, 4, 3, 5, 6}
Но я действительно не уверен, как это сделать ... Кто-нибудь знает?
PS Я не могу изменить номера, потому что тогда я бы потерять отслеживание игровых объектов, так как сами числа на самом деле не находятся в массиве, но у меня есть игровые объекты в массиве, и я нахожу «SortIndex» каждого игрового объекта, которые представляют собой числа сверху, порядок чисел в массив - это на самом деле порядок GameObjects в массиве, который мне нужно сохранить неизменным.
Редактировать: я также не могу изменить их на значения с плавающей точкой, потому что по какой-то причине при использовании SetSiblingIndex (int) у вас есть в целые числа вы не можете использовать числа с плавающей точкой
Редактировать 2: я НЕ пытаюсь отсортировать числа, я пытаюсь преобразовать числа от 3-11 до 0-6 в порядке
От:
{3, 7, 6, 9, 8, 10, 11}
* 1 019 * To:
{0, 2, 1, 4, 3, 5, 6}
Редактировать 3: Вот мой скрипт для тестирования
List<int> Indexs = new List<int>() { 4, 7, 56, 9, 65, 67, 8, 3, 6 };
var sorted = Indexs.Select((x, i) => new KeyValuePair<int, int>(x, i)).OrderBy(x => x.Key).ToList();
List<int> newArrangedNumbers = sorted.Select(x => x.Value).ToList();
for(int i = 0; i < newArrangedNumbers.Count; i++)
{
Debug.Log(Indexs[i] + " : " + newArrangedNumbers[i]);
}
Когда у меня было только 7 (0-6) индексов в списке «Индексы», это работало хорошо, но когда я добавил еще, он начал давать мне неправильные номера
Это то, что он дает с этим