Мой код прямо сейчас:Заказав список по размеру с помощью Linq
public GameObject[] Farms;
Farms = GameObject.FindGameObjectsWithTag("Farm").OrderBy(x => Vector2.Distance(this.transform.position, x.transform.position))
.ThenBy(x => x.transform.parent.gameObject.GetComponent<FoodSpawn>().FoodList.Count)
.ToArray();
Что у меня есть:
Так моя сцена имеет прямоугольник пол. Куб слева, куб справа и AI (игрок) посередине.
Каждый куб заполнен 7 кусками пищи (детские кубики). Кубики имеют бирку Farm
.
Список FoodList
- это список GameObject
, который в скрипте, прикрепленном к каждому кубу, содержит список каждого куска пищи в кубе.
Что я хочу достичь:
Игрок должен решить, какой куб заполнен продуктами, которые он хочет отправиться.
Но ему нужно взять расстояние до куба и количество пищи в расчете.
Таким образом, игроку необходимо заказать список таким образом, чтобы ближайшая ферма & ферма с наибольшим количеством продуктов питания - это первый элемент списка.
Теперь список правильно упорядочен по расстоянию, поэтому ближайший куб является первым элементом, но он пропускает строку .ThenBy
(или им что-то не так).
Что вы вводите? Каков ваш результат? Что вы ожидали вместо этого? Укажите [MCVE]. – nvoigt
Ваш код заказывает сначала на расстоянии. Но ТОЛЬКО, когда расстояния равны, он будет сортировать по количеству пищи. – Johan
Взгляните на то, что Йохан, спасибо, не знал этого. – Simon