Веб-запрос низкого уровня API ссылка
В то время как высокоуровневый веб-запрос API минимизирует потребность в стандартном коде, низкоуровневый веб-запрос API предлагает больше гибкости и контроля.
В этом разделе перечислены ключевые члены низкоуровневого API и сценарии, для которых они предназначены. В целом, использование низкоуровневого API предполагает создание UnityWebRequest, к которому вы присоединяете специализированные объекты DownloadHandler или UploadHandler для конкретных случаев загрузки и выгрузки.
Высокий и низкий уровни APIs не являются взаимоисключающими. Вы всегда можете настроить объекты UnityWebRequest, созданные с помощью высокого уровня API, если вам требуется больше контроля над общей операцией.
Создание экземпляров объектов UnityWebRequest
UnityWebRequest может быть инстанцировано через его constructors, как и любой другой объект. Для создания UnityWebRequest с или без обработчиков загрузки или загрузки доступно несколько подписей конструктора. UnityWebRequest также имеет свойства для настройки запроса, отслеживания его состояния и проверки результата.
Для получения дополнительной информации см. ссылку UnityWebRequest API.
Обработчики загрузки
Специализированные обработчики загрузки позволяют обрабатывать конкретные случаи загрузки и управлять обработкой входящих данных. Доступны следующие обработчики загрузки, все из которых специализируются на базе данных DownloadHandler class:
| Тип погрузчика | Описание |
|---|---|
DownloadHandlerBuffer |
Используется для простого хранения данных. Этот обработчик загрузки является самым простым и обрабатывает большинство случаев использования. Он хранит полученные данные в буфере собственного кода. Когда загрузка завершена, вы можете получить доступ к кэшируемым данным либо в виде массива байтов, либо в виде текстовой строки. |
DownloadHandlerFile |
Специализированный обработчик скачиваний для загрузки и сохранения больших файлов на диск с низким уровнем загрузки памяти. Он записывает загруженные байт прямо в файл, так что использование памяти низкое независимо от размера загружаемого файла. Различие от других обработчиков скачиваний в том, что вы извлекаете данные из сохраненного файла, а не из самого обработчика. |
DownloadHandlerTexture |
Специализированный обработчик загрузок, оптимизированный для загрузки образов для использования как Unity Texture объектов. Это более эффективная альтернатива использованию DownloadHandlerBuffer для загрузки файла изображения и затем создание текстуры из необработанных байтов с помощью Texture.LoadImage. |
DownloadHandlerAssetBundle |
Специализированный обработчик загрузки, оптимизированный для загрузки Unity AssetBundles. Он может передавать данные непосредственно в систему ассетов Unity и создавать объект AssetBundle в результате. |
DownloadHandlerAudioClip |
Специализированный обработчик загрузки, оптимизированный для загрузки аудио файлов. Это более эффективная альтернатива загрузке необработанных байтов с помощью DownloadHandlerBuffer и затем созданию AudioClip из них. |
DownloadHandlerScript |
Абстрактный базовый класс для пользовательских скриптуемых DownloadHandler реализации. Унаследуйтесь от этого класса, чтобы получать обратные вызовы от UnityWebRequest система, которую вы можете использовать для выполнения настраиваемой обработки данных по мере их поступления из сети. |
UnityWebRequest имеет свойство UnityWebRequest.disposeDownloadHandlerOnDispose, которое по умолчанию имеет значение true. Если это свойство имеет значение true, то вызов UnityWebRequest.Dispose также вызывает DownloadHandler.Dispose на связанном обработчике загрузки. Если вы сохраняете ссылку на обработчик загрузки дольше, чем ссылку на ассоциированный UnityWebRequest, установите disposeDownloadHandlerOnDispose на false.
Обработчики загрузки
Обработчики загрузки позволяют вам более детально контролировать аспекты процесса загрузки. Доступны следующие обработчики загрузки, все из которых специализируются на базовых файлах. UploadHandler class:
| Тип погрузчика | Описание |
|---|---|
UploadHandlerRaw |
Принимает буфер данных во время построения. Когда этот буфер представляет собой массив байтов, он копируется внутрь в память нативного кода. Система UnityWebRequest использует этот буфер, когда удаленный сервер готов получить данные тела запроса. Когда буфер предоставляется как NativeArray, копирование не выполняется. |
UploadHandlerFile |
Позволяет отправить содержимое файла в качестве тела запроса. Используя этот обработчик, можно отправить большой файл на сервер без использования большого количества памяти. Поскольку обработчик непрерывно читает данные из файла, а затем отправляет их, только небольшая часть файла сохраняется в памяти в любой момент времени. |
Значение свойства UploadHandler.contentType используется для значения заголовка Content-Type веб-запроса, если вы не установили его непосредственно на самом UnityWebRequest. Если вы установили заголовок Content-Type на объекте UnityWebRequest, то Content-Type на объекте обработчика загрузки игнорируется. Если вы не установили Content-Type ни на UnityWebRequest, ни на UploadHandler, система по умолчанию устанавливает Content-Type или application/octet-stream.
У UnityWebRequest есть disposeUploadHandlerOnDispose, которые по умолчанию имеют значение true. Если это свойство имеет значение true, то вызов UnityWebRequest.Dispose также вызывает UploadHandler.Dispose на связанном обработчике загрузки. Если вы сохраняете ссылку на обработчик загрузки дольше, чем ссылку на UnityWebRequest, установите disposeUploadHandlerOnDispose на false.