namespace YooAsset { internal class RequestBuildinPackageVersionOperation : AsyncOperationBase { private enum ESteps { None, RequestPackageVersion, Done, } private readonly DefaultBuildinFileSystem _fileSystem; private UnityWebTextRequestOperation _webTextRequestOp; private ESteps _steps = ESteps.None; /// /// 包裹版本 /// public string PackageVersion { private set; get; } internal RequestBuildinPackageVersionOperation(DefaultBuildinFileSystem fileSystem) { _fileSystem = fileSystem; } internal override void InternalOnStart() { _steps = ESteps.RequestPackageVersion; } internal override void InternalOnUpdate() { if (_steps == ESteps.None || _steps == ESteps.Done) return; if (_steps == ESteps.RequestPackageVersion) { if (_webTextRequestOp == null) { string filePath = _fileSystem.GetBuildinPackageVersionFilePath(); string url = DownloadSystemHelper.ConvertToWWWPath(filePath); _webTextRequestOp = new UnityWebTextRequestOperation(url); OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); } if (_webTextRequestOp.IsDone == false) return; if (_webTextRequestOp.Status == EOperationStatus.Succeed) { PackageVersion = _webTextRequestOp.Result; if (string.IsNullOrEmpty(PackageVersion)) { _steps = ESteps.Done; Status = EOperationStatus.Failed; Error = $"Buildin package version file content is empty !"; } else { _steps = ESteps.Done; Status = EOperationStatus.Succeed; } } else { _steps = ESteps.Done; Status = EOperationStatus.Failed; Error = _webTextRequestOp.Error; } } } } }