【发布时间】:2020-03-30 23:39:32
【问题描述】:
所以,我在一个列表中有一组整数
public List<int> numbers = new List<int>() { 3, 7, 6, 9, 8, 10, 11 }
我想要做的是更改这些数字,使它们在 0 到 6 之间排序,设置为兄弟索引。
然后会变成
public List<int> newArrangedNumbers = new List<int>() {0, 2, 1, 4, 3, 5, 6}
但我真的不知道该怎么做……有人知道吗?
附:我无法重新排列数字,因为这样我就会忘记游戏对象,因为数字本身实际上并不在数组中,但是我在数组中有游戏对象,并且我找到了每个游戏对象的“SortIndex”,它们是数字从上面看,数组中数字的顺序实际上就是数组中GameObjects的顺序,我需要保持不变。
编辑:我也不能将它们更改为浮点值,因为由于某种原因,当使用 SetSiblingIndex(int) 时,你必须使用整数,你不能使用浮点数
编辑 2:我不是在尝试对数字进行排序,而是在尝试将数字从 3-11 转换为 ORDER 中的 0-6
发件人:
{3, 7, 6, 9, 8, 10, 11}
收件人:
{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) 个索引时,它运行良好,但是当我添加更多时,它开始给我错误的数字
这就是它所提供的
【问题讨论】:
-
那么您需要从
numbers到newArrangedNumbers的简单转换吗?我假设数字0-6是由numbers的递增顺序决定的? -
是的,我正在尝试将 3-11 的数字更改为 0-6,但我需要它们保持相同的顺序
-
根据我从您的帖子中收集到的信息,您似乎正在处理索引。您并没有缩小数字,而是这些数字是在输入列表中排序的索引。
-
好吧,我很抱歉,我没有完全理解你们编写的代码,所以很混乱,我最初的目标不是获取索引,但我确实知道你是如何到达那里的,并且是的,这对我有用,我现在唯一的问题是统一没有我可以找到的 OrderBy 分类器。
-
好的,所以我遇到了一个新问题,它有效,但是当我尝试将第 7 项添加到列表中时,它又搞砸了......它把它们放在了错误的顺序..有没有办法解决这个问题?