private void BundleRequest_completed(AssetRequest request) { var bundleRequest = request as BundleRequest; if (!string.IsNullOrEmpty(bundleRequest.error)) { error = bundleRequest.error; bundleRequest.Release(); return; } var manifest = bundleRequest.assetBundle.LoadAsset <AssetBundleManifest>("AssetBundleManifest"); if (manifest == null) { error = "AssetBundleManifest == null"; bundleRequest.Release(); return; } else { Assets.bundleManifest = manifest; bundleRequest.assetBundle.Unload(false); bundleRequest.assetBundle = null; var assetRequest = Assets.LoadAssetAsync(Assets.AssetsManifestAsset, typeof(Manifest)); assetRequest.completed = AssetRequest_completed; loadState = LoadState.LoadAsset; bundleRequest.Release(); } }
void OnInit(AssetRequest request) { if (!string.IsNullOrEmpty(request.error)) { LoadVersions(string.Empty); return; } var path = Assets.GetRelativeUpdatePath(versionsTxt); if (!File.Exists(path)) { var asset = Assets.LoadAssetAsync(Assets.GetAssetBundleDataPathURL(versionsTxt), typeof(TextAsset)); asset.completed += delegate { if (asset.error != null) { LoadVersions(string.Empty); return; } var dir = Path.GetDirectoryName(path); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(path, asset.text); LoadVersions(asset.text); asset.Release(); }; } else { LoadVersions(File.ReadAllText(path)); } }
public AssetRequest LoadAssetAsync <T>(string assetPath) where T : UnityEngine.Object { AssetRequest request; if (assets.TryGetValue(assetPath, out request)) { request = Assets.LoadAssetAsync(assetPath, typeof(T)); assets.Add(assetPath, request); } return(request); }
private void LoadVersions(string text) { LoadText2Map(text, ref _versions); var url = GetDownloadURL(versionsTxt); var asset = Assets.LoadAssetAsync(url, typeof(TextAsset)); asset.completed += delegate { if (asset.error != null) { OnError(asset.error); return; } LoadText2Map(asset.text, ref _serverVersions); asset.Release(); asset = null; foreach (var item in _serverVersions) { string ver; if (!_versions.TryGetValue(item.Key, out ver) || !ver.Equals(item.Value)) { var downloader = new Download(); downloader.url = GetDownloadURL(item.Key); downloader.path = item.Key; downloader.version = item.Value; downloader.savePath = Assets.GetRelativeUpdatePath(item.Key); _downloads.Add(downloader); } } if (_downloads.Count == 0) { Complete(); } else { var downloader = new Download(); downloader.url = GetDownloadURL(Assets.platform); downloader.path = Assets.platform; downloader.savePath = Assets.GetRelativeUpdatePath(Assets.platform); _downloads.Add(downloader); state = State.WaitDownload; updateScreen.messageBox.SetActive(true); updateScreen.message.text = string.Format("检查到有 {0} 个文件需要更新,点 Download 开始更新。", _downloads.Count); } }; }
public Widget(string assetPath) { _request = Assets.LoadAssetAsync(assetPath, typeof(GameObject)); state = State.Loading; WidgetManager.Add(this); }
private void OnGUI() { if (state == State.Completed) { using (var v = new GUILayout.VerticalScope("AssetsUpdate Demo", "window")) { GUILayout.Label(string.Format("{0}:{1}", state, message)); if (GUILayout.Button("Clear")) { Clear(); } GUILayout.Label("AllBundleAssets:"); var assets = Assets.GetAllBundleAssetPaths(); foreach (var item in assets) { if (GUILayout.Button(item)) { assetPath = item; } } using (var h = new GUILayout.HorizontalScope()) { assetPath = GUILayout.TextField(assetPath, GUILayout.Width(256)); if (GUILayout.Button("Load")) { var asset = Assets.LoadAsset(assetPath, typeof(UnityEngine.Object)); asset.completed += OnAssetLoaded; } if (GUILayout.Button("LoadAsync")) { var asset = Assets.LoadAssetAsync(assetPath, typeof(UnityEngine.Object)); asset.completed += OnAssetLoaded; } if (GUILayout.Button("LoadScene")) { var asset = Assets.LoadSceneAsync(assetPath, true); asset.completed += OnAssetLoaded; } } if (loadedAssets.Count > 0) { if (GUILayout.Button("UnloadAll")) { for (int i = 0; i < loadedAssets.Count; i++) { var item = loadedAssets[i]; item.Release(); } loadedAssets.Clear(); } for (int i = 0; i < loadedAssets.Count; i++) { var item = loadedAssets[i]; using (var h = new GUILayout.HorizontalScope()) { GUILayout.Label(item.url); if (GUILayout.Button("Unload")) { item.Release(); loadedAssets.RemoveAt(i); i--; } } } } } } }
public void Load() { request = Assets.LoadAssetAsync(url, type); }
public void Load() { request = Assets.LoadAssetAsync(url, typeof(GameObject)); request.completed += OnAssetLoaded; }