From 3ee94fb3b9f27957c2b084f632f6d0fe3c056e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Mon, 30 Jun 2025 15:43:47 +0800 Subject: [PATCH] update extension sample --- .../GetBuildinPackageVersionOperation.cs | 82 +++++++++++++++++++ .../GetBuildinPackageVersionOperation.cs.meta | 11 +++ 2 files changed, 93 insertions(+) create mode 100644 Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs create mode 100644 Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs.meta diff --git a/Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs b/Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs new file mode 100644 index 00000000..cd8e13bf --- /dev/null +++ b/Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using YooAsset; + +/// +/// 获取包体里的内置资源清单版本 +/// +public class GetBuildinPackageVersionOperation : GameAsyncOperation +{ + private enum ESteps + { + None, + GetPackageVersion, + Done, + } + + private readonly string _packageName; + private UnityWebTextRequestOperation _versionFileRequestOp; + private ESteps _steps = ESteps.None; + + /// + /// 内置资源清单版本 + /// + public string PackageVersion { private set; get; } + + public GetBuildinPackageVersionOperation(string packageName) + { + _packageName = packageName; + } + protected override void OnStart() + { + _steps = ESteps.GetPackageVersion; + } + protected override void OnUpdate() + { + if (_steps == ESteps.None || _steps == ESteps.Done) + return; + + if (_steps == ESteps.GetPackageVersion) + { + if (_versionFileRequestOp == null) + { + string filePath = GetBuildinPackageVersionFilePath(); + string url = DownloadSystemHelper.ConvertToWWWPath(filePath); + _versionFileRequestOp = new UnityWebTextRequestOperation(url); + OperationSystem.StartOperation(_packageName, _versionFileRequestOp); + } + + if (_versionFileRequestOp.IsDone == false) + return; + + if (_versionFileRequestOp.Status == EOperationStatus.Succeed) + { + _steps = ESteps.Done; + Status = EOperationStatus.Succeed; + PackageVersion = _versionFileRequestOp.Result; + } + else + { + _steps = ESteps.Done; + Status = EOperationStatus.Failed; + Error = _versionFileRequestOp.Error; + } + } + } + protected override void OnAbort() + { + } + + private string GetBuildinYooRoot() + { + return YooAssetSettingsData.GetYooDefaultBuildinRoot(); + } + private string GetBuildinPackageVersionFilePath() + { + string fileRoot = GetBuildinYooRoot(); + string fileName = YooAssetSettingsData.GetPackageVersionFileName(_packageName); + return PathUtility.Combine(fileRoot, _packageName, fileName); + } +} \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs.meta b/Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs.meta new file mode 100644 index 00000000..d5ac0849 --- /dev/null +++ b/Assets/YooAsset/Samples~/Extension Sample/Runtime/ExtensionOperation/GetBuildinPackageVersionOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 609e1ce54918dab40900d532704b1187 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: