在代碼的頂部:如何找到列表中具有相同值並操作此項目的所有項目?
[System.Serializable]
public class PosDisPair //Name the pair however you like
{
public float Distance;
public Vector3 Pos;
}
然後:
private List<PosDisPair> pairList = new List<PosDisPair>();
而且
private void FindDistances()
{
pairList = new List<PosDisPair>();
for (int i = 0; i < objects.Count; i++)
{
PosDisPair pairToAdd = new PosDisPair();
pairToAdd.Distance = Vector3.Distance(EndStartPoints[0].transform.position, objects[i].transform.position);
pairToAdd.Pos = objects[i].transform.position;
pairList.Add(pairToAdd);
}
pairList.Sort(delegate (PosDisPair a, PosDisPair b) {
return (a.Distance.CompareTo(b.Distance));
});
Manip();
}
而在去年
private void Manip()
{
List<float> samedistances = new List<float>();
pairList = pairList.OrderBy(x => x.Distance).ToList();
for (int i = 0; i < pairList.Count; i++)
{
if (pairList[i].Distance == pairList[i+1].Distance)
{
samedistances.Add(pairList[i].Distance);
}
}
}
內MANIP方法我使用排序依據,以分類List by distance屬性。 所以現在第一個距離是0,所以我不需要做任何事情。
然後有三個項目,每個的距離是10. 但是每個項目的位置是不一樣的。
我想要做的是每次從列表中取出所有相同的距離項目。例如,要取所有10個距離項目,從這三個項目中取一個隨機項目。
旁邊拾取兩個20的距離項目的隨機之一,並再次每個相同的距離項目。
所以最後我會列出所有項目,距離和位置,但從每個相同的距離將只有一個項目。
所以在成對列表結束時,我將具有用於例如:
索引0 =距離0
指數1 =距離10
索引2 =距離14.45456
索引3 =距離20 。 。 。 指數44 =距離134
相同的距離有彼此的位置。
例如:
索引1距離10,posiiton 1,1,1-
索引2距離10,位置2,1,1
索引3距離10,位置3,1 ,1
因此,當它將選擇一個隨機距離10時,它將與它自己的位置。
它幾乎一樣,如果你有'GroupBy'一個屬性,然後'Select'單個項目... – maccettura