/// <summary>
        /// 单个资源更新加载完成
        /// </summary>
        /// <param name="flag"></param>
        /// <param name="name"></param>
        private void OnResItemUpdated(bool flag, string name)
        {
            if (CachedVersion != default)
            {
                CachedVersion.RemoveUpdate(name);

                float min         = CachedVersion.UpdatingLoaded;
                float max         = CachedVersion.UpdatingMax;
                bool  isCompleted = min >= max;

                UpdateHandler?.Invoke(isCompleted, isCompleted ? 1f : min / max);

                bool isFinished = min >= max;
                if (isFinished)
                {
                    CachedVersion.res_version = mRemoteResVersion;
                    CachedVersion.WriteAsCached();
                    CachedVersion.ResetUpdatingsCount();
                }
                else
                {
                }
            }
            else
            {
            }
        }
        public void CacheResVersion(bool isExit)
        {
            if (CachedVersion != default)
            {
                if (CachedVersion.resVersionType == ResDataVersionType.Cached)
                {
                    CachedVersion?.WriteAsCached();
                }
                else
                {
                }

                if (isExit)
                {
                    CachedVersion.Clean();
                    CachedVersion = default;
                }
                else
                {
                }
            }
            else
            {
            }
        }
        private void OnLoadComplete(bool success, Loader.Loader target)
        {
            if (success)
            {
                string json = target.TextData;
                target.Dispose();

                ResDataVersion remoteVersions = JsonUtility.FromJson <ResDataVersion>(json);
                remoteVersions.resVersionType = ResDataVersionType.Remote;
                CreateVersionsCached(ref remoteVersions);

                RemoteAppVersion = remoteVersions.app_version;
                if (VersionInvalidHandler != default)
                {
                    bool flag = VersionInvalidHandler();
                    if (flag)
                    {
#if LOG_CLIENT_VERSIONING
                        "warning:There have a newer App inistaller.".Log();
#endif
                        return;
                    }
                    else
                    {
                    }
                }
                else
                {
                }

                mRemoteResVersion = remoteVersions.res_version;
                List <ResVersion> resUpdate = CachedVersion.CheckUpdates(Versions, ref remoteVersions);
                CachedVersion.WriteAsCached();

#if LOG_CLIENT_VERSIONING
                "log:Remote res update count is {0}".Log(resUpdate.Count.ToString());
                "log:UpdateHandler is null: {0}".Log((UpdateHandler == default).ToString());
#endif
                if (resUpdate.Count == 0)
                {
                    UpdateHandler?.Invoke(true, 1f);
                }
                else
                {
                    StartLoadPatchRes(ref resUpdate);
                }
            }
            else
            {
                "error: Load remote version failed, url is {0}".Log(target.Url);
            }
        }