/// <summary> /// アセットバンドル情報一覧のダウンロード /// </summary> /// <returns>コルーチン</returns> public IEnumerator DownloadAssetBundleInfoList() { var platformName = PlatformNameManager.GetPlatformName(Application.platform); var url = string.Format("{0}/{1}/{2}", AssetBundleManagerConfig.ServerURL, platformName, AssetBundleManagerConfig.AssetBundleInfoListFileName); var webRequest = UnityWebRequest.Get(url); webRequest.timeout = 300; #if UNITY_2017_2_OR_NEWER yield return(webRequest.SendWebRequest()); #else yield return(webRequest.Send()); #endif while (!webRequest.isDone) { if (webRequest.isNetworkError || webRequest.isHttpError) { Debug.LogError("AssetBundleInfoList Download Error."); webRequest.Dispose(); yield break; } yield return(null); } if (webRequest.responseCode != 200) { Debug.LogErrorFormat("Respose Error : Code = {0}", webRequest.responseCode); yield break; } this.assetBundleInfoList = JsonUtility.FromJson <AssetBundleInfoList>(webRequest.downloadHandler.text); this.assetBundleInfoList.CreateDictionary(); webRequest.Dispose(); }
/// <summary> /// アセットバンドルのダウンロード /// </summary> /// <returns>コルーチン</returns> /// <param name="downloadRequest">ダウンロードリクエスト</param> public IEnumerator LoadFromCacheOrDownloadAssetBundle(AssetBundleDownloadRequest downloadRequest) { while (!Caching.ready) { yield return(null); } var platformName = PlatformNameManager.GetPlatformName(Application.platform); foreach (var assetBundleInfo in downloadRequest.AssetBundleInfos) { var assetBundleName = assetBundleInfo.AssetBundleName; var url = string.Format("{0}/{1}/{2}", AssetBundleManagerConfig.ServerURL, platformName, assetBundleName); var webRequest = UnityWebRequest.Get(url); var hash = UnityEngine.Hash128.Parse(assetBundleInfo.HashString); webRequest.downloadHandler = new DownloadHandlerAssetBundle(url, hash, assetBundleInfo.Crc); webRequest.timeout = 300; webRequest.SetRequestHeader("Cache-Control", "no-cache"); #if UNITY_2017_2_OR_NEWER yield return(webRequest.SendWebRequest()); #else yield return(webRequest.Send()); #endif while (!webRequest.isDone) { if (webRequest.isNetworkError || webRequest.isHttpError) { if (downloadRequest.OnError != null) { downloadRequest.OnError.Invoke("AssetBundleInfoList Download Error."); } this.DownloadRequestErrorEvent.Invoke(downloadRequest); webRequest.Dispose(); yield break; } Debug.LogFormat("[{0}] Download Progress. : {1}%", assetBundleName, (webRequest.downloadProgress * 100)); yield return(null); } var handler = webRequest.downloadHandler as DownloadHandlerAssetBundle; var assetBundle = handler.assetBundle; this.AssetBundleDownloadedEvent.Invoke(assetBundle); webRequest.downloadHandler.Dispose(); } if (downloadRequest.OnCompleted != null) { downloadRequest.OnCompleted.Invoke(); } this.DownloadRequestCompletedEvent.Invoke(downloadRequest); }
public static void BuildAssetBundles() { AssetDatabase.RemoveUnusedAssetBundleNames(); var assetBundleNames = AssetDatabase.GetAllAssetBundleNames(); var assetBundleBuilds = AssetBundleBuilder.GenerateAssetBundleBuilds(assetBundleNames); var currentBuildTarget = EditorUserBuildSettings.activeBuildTarget; var platformName = PlatformNameManager.GetPlatformName(currentBuildTarget); var outputPath = string.Format("AssetBundles/{0}", platformName); AssetBundleBuilder.CheckAndCreateDirectory(outputPath); var assetBundleManifest = BuildPipeline.BuildAssetBundles(outputPath, assetBundleBuilds, BuildAssetBundleOptions.ChunkBasedCompression, currentBuildTarget); AssetBundleBuilder.SaveAssetBundleInfoListFile(outputPath, assetBundleManifest); }