Я программирование игры с помощью Unity Engine и я в настоящее время работаю в следующей задачу:Сравните параметры нескольких обратных вызовов
У меня есть метод, который асинхронно возвращает его результат, используя параметры функции обратного вызова. Довольно просто, это выглядит следующим образом:
public void CalculateSomething(- PARAMETERS - , Action<float> callback)
я должен вызвать этот метод в цикле для различных параметров.
foreach(float f in manyFloats){
CalculateSomething(f, myCallback);
}
void myCallback(float f){
...compare this result value to the other values?...
}
Теперь я хотел бы сравнить полученные поплавки, которые приходят с различными обратными вызовами. Скажем так, я хочу найти наивысшую ценность среди этих поплавков. Как мне это сделать?
У меня возникла идея сохранить результаты в поле массива и просто сравнить после его полного заполнения, но я не знаю, как проверить, выполнены ли все обратные вызовы уже.
В идеале я бы хотел избежать загрязнения моего класса таким полем, но было бы хорошо, если нет другого пути.
Функция CalculateSomething
является частью библиотеки, поэтому я не могу ее изменить. Все остальное является переменным.
Вам нужна настройка обратного вызова, которую вы сейчас имеете? С этим примером кода кажется проще всего вернуть значение из 'CalculateSomething' для добавления в список, и вы можете сравнить значения после цикла. – Jonesopolis
'CalculateSomething' из другой библиотеки, поэтому это должно остаться. Все остальное можно было бы изменить. О вашем предложении: Как узнать, когда список заполнен? Как проверить, завершен ли каждый callback? Могу ли я сделать это, не загрязняя мой класс? Редактировать: К сожалению, это не предназначалось для отправки уже ... – MaXL130