Введение в веб-запрос Unity APIs
UnityWebRequest — это сетевой API HTTP/HTTPS в Unity для взаимодействия с веб-сервисами, передачи файлов и потоковой передачи данных во время выполнения.
Общие виды использования системы веб-запросов Unity включают:
- Загрузка содержимого во время выполнения, например:
- AssetBundles с удаленных серверов, при использовании обычных AssetBundle или Addressables систем.
- Текст/JSON для конфигурации, локализации и настройки в реальном времени.
- Изображения (как Текстуры) и аудио (как AudioClips) для динамического контента.
- Патчирование во время сборки или выполнения через удаленные манифесты.
- Загрузка данных на серверы, например:
- Метрика игрока.
- Сохранённое состояние игры.
- Журналы ошибок/исключений и отчеты о сбоях.
- Пользовательские телеметрия и анализ.
- Интеграция с сетями доставки контента, проверкой подлинности и безопасностью, платежными платформами, многопользовательскими службами, диагностикой и удаленными конвейерами построения.
- Внедрение сетевых многопользовательских и пошаговых игр с низким уровнем трафика, таких как шахматы.
Архитектура
Система веб-запросов Unity состоит из двух уровней:
- A Высокий уровень API (HLAPI) оборачивает низкоуровневый API и предоставляет удобный интерфейс для типичных операций.
- Низкоуровневая API (LLAPI) обеспечивает максимальную гибкость для более сложных операций.
Система разбивает транзакцию HTTP на следующие операции:
- Отправка данных на сервер.
- Получение данных с сервера.
- HTTP управление потоком (например, перенаправления и обработка ошибок).
Каждая из этих операций управляется определенным типом объекта, который можно использовать для настройки и управления аспектами транзакции:
- Объект
UploadHandlerобрабатывает передачу данных на сервер. - Объект
DownloadHandlerобрабатывает получение, буферизацию и последующую обработку данных, полученных от сервера. - Объект
UnityWebRequestуправляет двумя другими объектами, а также управляет потоком HTTP. В этом объекте определяются пользовательские заголовки и URLs, а также хранится информация об ошибках и перенаправлениях.
Ниже приводится обзор транзакции HTTP на высоком уровне:
- Создать объект
UnityWebRequest. - Настроить
UnityWebRequestобъект.- Установить пользовательские заголовки.
- Установите HTTP глагол (например,
GET,POST,HEAD— пользовательские глаголы разрешены на всех платформах). - Комплект URL.
- (Необязательно) Создайте обработчик загрузки и прикрепите его к веб-запросу.
- Укажите данные, подлежащие загрузке.
- Предоставьте форму HTTP для загрузки.
- (Необязательно) Создайте обработчик загрузки и приложите его к веб-запросу.
- Отправить веб-запрос.
- Из коррутин, вы можете
yieldрезультатUnityWebRequest.SendRequestвызова, чтобы дождаться завершения запроса.
- Из коррутин, вы можете
- (Необязательно) Чтение полученных данных из обработчика загрузки.
- (Необязательно) Чтение информации об ошибке, кода состояния HTTP и заголовков ответов из объекта
UnityWebRequest.
Подробный пример кода, иллюстрирующий эти действия, см. в документации API для UploadHandlerRaw.