private IEnumerator SearchCoroutine(string query, int skip) { // Сформировать данные для запроса var itemsPerPage = searchSettingsRuntime.ItemsPerPage; // Сформировать запрос var requestOper = managerServer.Search(query, skip, itemsPerPage); // Выполнить запрос yield return(requestOper); // Получить ответ var response = requestOper.Current as SearchResponse; // Создать переменную для хранения обратного вызова UnityEvent callback; if (response == null || response.IsError) { // Сообщить об ошибке callback = searchSettingsRuntime.OnSearchError; // Сбросить данные поиска ResetSearchSettings(); } else { // Сообщить об успешном завершении поиска callback = searchSettingsRuntime.OnSearchComplite; // Сохранить полученные данные dataRuntime.SearchResponse = response.data.ToList(); searchSettingsRuntime.ItemsCount = response.RecordsFoundCount; searchSettingsRuntime.LastItemIndex = Mathf.Min(skip + searchSettingsRuntime.ItemsPerPage, searchSettingsRuntime.ItemsCount) - 1; } // Завершить поиск searchSettingsRuntime.SearchCoroutine = null; // Сообщить о завершении поиска callback?.Invoke(); }