void Check() { Assets.Initialize(delegate { var path = Utility.GetRelativePath4Update(versionsTxt); if (!File.Exists(path)) { var asset = Assets.LoadAsync(Utility.GetWebUrlFromDataPath(versionsTxt), typeof(TextAsset)); asset.completed += delegate { if (asset.error != null) { OnError(asset.error); 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)); } }, OnError); progress += OnProgress; state = State.Checking; }
private void LoadVersions(string text) { LoadText2Map(text, ref _versions); var asset = Assets.LoadAsync(Utility.GetDownloadURL(versionsTxt), typeof(TextAsset)); asset.completed += delegate { if (asset.error != null) { OnError(asset.error); return; } LoadText2Map(asset.text, ref _serverVersions); foreach (var item in _serverVersions) { string ver; if (!_versions.TryGetValue(item.Key, out ver) || !ver.Equals(item.Value)) { var downloader = new Download(); downloader.url = Utility.GetDownloadURL(item.Key); downloader.path = item.Key; downloader.version = item.Value; downloader.savePath = Utility.GetRelativePath4Update(item.Key); _downloads.Add(downloader); } } if (_downloads.Count == 0) { Complete(); } else { var downloader = new Download(); downloader.url = Utility.GetDownloadURL(Utility.GetPlatform()); downloader.path = Utility.GetPlatform(); downloader.savePath = Utility.GetRelativePath4Update(Utility.GetPlatform()); _downloads.Add(downloader); Download(); } }; }
private void OnGUI() { using (var v = new GUILayout.VerticalScope("AssetsUpdate Demo", "window")) { switch (state) { case State.Wait: if (GUILayout.Button("Check")) { Check(); } break; case State.Completed: if (GUILayout.Button("Clear")) { Clear(); } break; default: break; } GUILayout.Label(string.Format("{0}:{1}", state, message)); if (state == State.Completed) { GUILayout.Label("AllBundleAssets:"); foreach (var item in Assets.bundleAssets) { if (GUILayout.Button(item.Key)) { assetPath = item.Key; } } using (var h = new GUILayout.HorizontalScope()) { assetPath = GUILayout.TextField(assetPath, GUILayout.Width(256)); if (GUILayout.Button("Load")) { var asset = Assets.Load(assetPath, typeof(UnityEngine.Object)); asset.completed += OnAssetLoaded; } if (GUILayout.Button("LoadAsync")) { var asset = Assets.LoadAsync(assetPath, typeof(UnityEngine.Object)); asset.completed += OnAssetLoaded; } if (GUILayout.Button("LoadScene")) { var asset = Assets.LoadScene(assetPath, true, 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.name); if (GUILayout.Button("Unload")) { item.Release(); loadedAssets.RemoveAt(i); i--; } } } } } } }