From 942e4bf672ee5cbc875d97c41272c5df5cd58d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Thu, 26 Dec 2024 21:53:02 +0800 Subject: [PATCH] fix #413 --- .../Runtime/GetCacheBundleSizeOperation.cs | 70 +++++++++++++++++++ .../GetCacheBundleSizeOperation.cs.meta | 11 +++ 2 files changed, 81 insertions(+) create mode 100644 Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs create mode 100644 Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs.meta diff --git a/Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs b/Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs new file mode 100644 index 00000000..e5cb9c08 --- /dev/null +++ b/Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using YooAsset; + +/// +/// 获取沙盒目录里缓存文件大小 +/// +public class GetCacheBundleSizeOperation : GameAsyncOperation +{ + private enum ESteps + { + None, + GetCacheFiles, + Done, + } + + private readonly string _packageName; + private ESteps _steps = ESteps.None; + + /// + /// 总大小(单位:字节) + /// + public long TotalSize = 0; + + + public GetCacheBundleSizeOperation(string packageName) + { + _packageName = packageName; + } + protected override void OnStart() + { + _steps = ESteps.GetCacheFiles; + } + protected override void OnUpdate() + { + if (_steps == ESteps.None || _steps == ESteps.Done) + return; + + if (_steps == ESteps.GetCacheFiles) + { + long totalSize = 0; + string directoryRoot = GetCacheDirectoryRoot(); + var directoryInfo = new DirectoryInfo(directoryRoot); + if (directoryInfo.Exists) + { + FileInfo[] fileInfos = directoryInfo.GetFiles("*", SearchOption.AllDirectories); + foreach (FileInfo fileInfo in fileInfos) + { + totalSize += fileInfo.Length; + } + } + + TotalSize = totalSize; + _steps = ESteps.Done; + Status = EOperationStatus.Succeed; + } + } + protected override void OnAbort() + { + } + + private string GetCacheDirectoryRoot() + { + string rootDirectory = YooAssetSettingsData.GetYooMobileCacheRoot(); + string packageRoot = PathUtility.Combine(rootDirectory, _packageName); + return PathUtility.Combine(packageRoot, DefaultCacheFileSystemDefine.SaveFilesFolderName); + } +} \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs.meta b/Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs.meta new file mode 100644 index 00000000..28716555 --- /dev/null +++ b/Assets/YooAsset/Samples~/Extension Sample/Runtime/GetCacheBundleSizeOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8790bf5eb17db6843b696018a2b1ce6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: