Важно: UNet — это устаревшее решение, а также новая многопользовательская и сетьсистема Unity, которая обеспечивает многопользовательскую игру. игры через компьютерную сеть. Подробнее См. в Словарь Решение (Netcode для GameObjects) находится в разработке. Дополнительную информацию и дальнейшие действия см. на веб-сайте Unity Netcode for GameObjects. |
Чтобы загрузить AssetBundle с удаленного сервера, вы можете использовать UnityWebRequest.GetAssetBundle
. Эта функция передает данные во внутренний буфер, который декодирует и распаковывает данные AssetBundle в рабочем потоке.
Аргументы функции принимают несколько форм. В своей простейшей форме он принимает только URL-адрес, с которого должен быть загружен AssetBundle. При желании вы можете указать контрольную сумму для проверки целостности загруженных данных.
В качестве альтернативы, если вы хотите использовать систему кэширования AssetBundle, вы можете указать либо номер версии, либо структуру данных Hash128. Они идентичны номерам версий или объектам Hash128
, предоставленным в старой системе через WWW.LoadFromCacheOrDownload
.
Подробнее
- Эта функция создает
UnityWebRequest
и задает целевой URL-адрес для предоставленного аргумента URL-адреса. Он также устанавливает для команды HTTP значениеGET
, но не устанавливает другие флаги или настраиваемые заголовки. - Эта функция прикрепляет
DownloadHandlerAssetBundle
кUnityWebRequest
. Этот обработчик загрузки имеет специальное свойствоassetBundle
, которое можно использовать для извлечения AssetBundle после загрузки и декодирования достаточного количества данных, чтобы разрешить доступ к ресурсам внутри AssetBundle. - Если вы указываете номер версии или объект
Hash128
в качестве аргументов, он также передает эти аргументы вDownloadHandlerAssetBundle
. Затем обработчик загрузки использует систему кэширования.
Пример
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetAssetBundle());
}
IEnumerator GetAssetBundle() {
UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle("https://www.my-server.com/myData.unity3d");
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
}
}
}