Example #1
0
        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();
            }
        }
Example #2
0
        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));
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
                }
            };
        }
Example #5
0
 public Widget(string assetPath)
 {
     _request = Assets.LoadAssetAsync(assetPath, typeof(GameObject));
     state    = State.Loading;
     WidgetManager.Add(this);
 }
Example #6
0
        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--;
                                }
                            }
                        }
                    }
                }
            }
        }
Example #7
0
 public void Load()
 {
     request = Assets.LoadAssetAsync(url, type);
 }
Example #8
0
 public void Load()
 {
     request            = Assets.LoadAssetAsync(url, typeof(GameObject));
     request.completed += OnAssetLoaded;
 }