Пример #1
0
        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;
        }
Пример #2
0
        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();
                }
            };
        }
Пример #3
0
        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--;
                                }
                            }
                        }
                    }
                }
            }
        }