Exemple #1
0
        private static IEnumerator Load <T>(AssetBundleUnit assetBundleUnit,
                                            string name,
                                            System.Action <T> action) where T : Object
        {
            if (assetBundleUnit != null && assetBundleUnit.assetBundle != null)
            {
                AssetBundleRequest request = assetBundleUnit.assetBundle.LoadAssetAsync <T>(name);
                yield return(request);

                action.InvokeGracefully(request.asset);
            }
            else
            {
                action.InvokeGracefully(null);
            }
        }
Exemple #2
0
        public static void DoUpload(PackageVersion packageVersion, System.Action succeed)
        {
            EditorUtility.DisplayProgressBar("插件上传", "打包中...", 0.1f);

            var fileName = packageVersion.Name + "_" + packageVersion.Version + ".unitypackage";
            var fullpath = PackageManagerView.ExportPaths(fileName, packageVersion.InstallPath);
            var file     = File.ReadAllBytes(fullpath);

            var form = new WWWForm();

            form.AddField("username", User.Username.Value);
            form.AddField("password", User.Password.Value);
            form.AddField("name", packageVersion.Name);
            form.AddField("version", packageVersion.Version);
            form.AddBinaryData("file", file);
            form.AddField("version", packageVersion.Version);
            form.AddField("releaseNote", packageVersion.Readme.content);
            form.AddField("installPath", packageVersion.InstallPath);
            form.AddField("accessRight", packageVersion.AccessRight.ToString().ToLower());
            form.AddField("docUrl", packageVersion.DocUrl);

            if (packageVersion.Type == PackageType.FrameworkModule)
            {
                form.AddField("type", "fm");
            }
            else if (packageVersion.Type == PackageType.Shader)
            {
                form.AddField("type", "s");
            }
            else if (packageVersion.Type == PackageType.AppOrGameDemoOrTemplate)
            {
                form.AddField("type", "agt");
            }
            else if (packageVersion.Type == PackageType.Plugin)
            {
                form.AddField("type", "p");
            }

            Debug.Log(fullpath);

            EditorUtility.DisplayProgressBar("插件上传", "上传中...", 0.2f);


            ObservableWWW.Post(UPLOAD_URL, form,
                               new Dictionary <string, string> {
                { "Authorization", "Token " + User.Token.Value }
            })
            .Subscribe(responseContent =>
            {
                EditorUtility.ClearProgressBar();
                Debug.Log(responseContent);
                succeed.InvokeGracefully();
                File.Delete(fullpath);
            }, e =>
            {
                EditorUtility.ClearProgressBar();
                EditorUtility.DisplayDialog("插件上传", "上传失败!{0}".FillFormat(e.Message), "确定");
                File.Delete(fullpath);
            });
        }
Exemple #3
0
        public static T ApplySelfToGracefully <T>(this T selfObj, System.Action <T> toFunction) where T : Object
        {
            if (selfObj)
            {
                toFunction.InvokeGracefully(selfObj);
            }

            return(selfObj);
        }
        /// <summary>
        /// 版本文件下载回调
        /// </summary>
        /// <param name="data"></param>
        /// <param name="downResult"></param>
        /// <param name="downError"></param>
        public void AppVersionCall(byte[] data, DownStatus downResult = DownStatus.Sucess, string downError = "")
        {
            if (downResult != DownStatus.Sucess)
            {
                AFLogger.e("下载Version文件未成功,请检查!");
                return;
            }
            AppInfoConfig appInfoConfig = SerializeHelper.FromJson <AppInfoConfig>(System.Text.Encoding.UTF8.GetString(data));
            double        appV          = 0;

            if (ABConfig.isDevelopOrOnlineAB)
            {
                appV = ABConfig.ABDevelopmentVersion;
            }
            else
            {
                appV = ABConfig.ABOnlineVersion;
            }
            if (appInfoConfig.AvailableABVersions.Contains(appV))
            {
                if (appInfoConfig.NewABVersion.Contains(appV))
                {
                    versionStatus = APPVersionStatus.Newest;
                }
                else
                {
                    versionStatus = APPVersionStatus.Update;
                }
                if (CheckABConfig())
                {
                    ABInit(default(byte[]));
                }
            }
            else
            {
                versionStatus = APPVersionStatus.Abandon;
                ABCheckInitFinish.InvokeGracefully(versionStatus);
                IsABCheckFinish = true;
            }
        }
Exemple #5
0
        public void Dispose()
        {
            if (mDisposed)
            {
                return;
            }
            mDisposed = true;

            OnBeganCallback = null;
            OnEndedCallback = null;
            OnDisposedCallback.InvokeGracefully();
            OnDisposedCallback = null;
            OnDispose();
        }
Exemple #6
0
 public static void LoadAssetAsyc <T>(string path,
                                      string name,
                                      System.Action <T> action,
                                      bool release = false) where T : Object
 {
     if (IsResources(path))
     {
         ResourceRequest request = Resources.LoadAsync <T>(GetResourcesName(path, name));
         TaskHelper.Create <CoroutineTask>()
         .Delay(request)
         .Do(() => {
             action.InvokeGracefully(request.asset.As <T>());
         })
         .Execute();
     }
     else
     {
         LoadAssetBundleUnitAsyc(path, (assetBundleUnit) => {
             LoadAssetFromAssetBundleUnitAsyc <T>(assetBundleUnit, name, (asset) => {
                 action.InvokeGracefully(asset);
             }, release);
         });
     }
 }
Exemple #7
0
        public bool Execute(float dt)
        {
            if (!mOnBeginCalled)
            {
                mOnBeginCalled = true;
                OnBegin();
                OnBeganCallback.InvokeGracefully();
            }

            if (!Finished)
            {
                OnExecute(dt);
            }

            if (Finished)
            {
                OnEnd();
                OnEndedCallback.InvokeGracefully();
            }

            return(Finished || mDisposed);
        }
Exemple #8
0
 public static void LoadAssetFromAssetBundleUnitAsyc <T>(AssetBundleUnit assetBundleUnit,
                                                         string name,
                                                         System.Action <T> finish,
                                                         bool release = false) where T : Object
 {
     if (assetBundleUnit != null && assetBundleUnit.assetBundle != null)
     {
         TaskHelper.Create <CoroutineTask>()
         .Delay(Load(assetBundleUnit, name, finish))
         .Do(() => {
             if (release)
             {
                 AssetBundleManager.instance.Release(assetBundleUnit);
             }
         })
         .Execute();
     }
     else
     {
         Log.W(TAG, "Load Asset {0} from {1} is null", name, assetBundleUnit.name);
         finish.InvokeGracefully(null);
     }
 }
Exemple #9
0
 public static T ApplySelfTo <T>(this T self, System.Action <T> toFunction) where T : Object
 {
     toFunction.InvokeGracefully(self);
     return(self);
 }