diff --git a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs index 567a081..e333107 100644 --- a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs +++ b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Linq; using Cysharp.Threading.Tasks; using Main; using Newtonsoft.Json; @@ -114,7 +115,7 @@ namespace Stary.Evo private async UniTask HOST_PLAYMODE(ResourcePackage package) { #if WEB_NORMAL - var initParams = YooAssetFileSystem.WebInitializeParameter(package.PackageName); + var initParams = YooAssetFileSystem.WebInitializeParameter(package.PackageName); #else var initParams = YooAssetFileSystem.HostInitializeParameter(package.PackageName); #endif @@ -128,6 +129,11 @@ namespace Stary.Evo if (initOperation.Status == EOperationStatus.Succeed) { Debug.Log("UnityEvo:从远程加载资源包,初始化成功!"); +#if WEB_NORMAL + string extractPath = Path.Combine(Application.persistentDataPath, "DownloadedContent",package.PackageName); + await CreateResourceImporter(package, extractPath); +#endif + return true; } else @@ -438,5 +444,26 @@ namespace Stary.Evo } #endregion + + #region 加载模块 + + private async UniTask CreateResourceImporter(ResourcePackage package, string extractPath) + { + // 2. 使用 ResourceImporter 导入解压的文件到缓存系统 + string[] files = Directory.GetFiles(extractPath, "*", SearchOption.AllDirectories) + .Where(f => !f.EndsWith(".meta")) + .ToArray(); + + var importerOp = package.CreateResourceImporter(files, 10, 3); + await importerOp; + + if (importerOp.Status == EOperationStatus.Succeed) + { + // 导入成功,现在资源在 YooAsset 缓存中,可以通过正常方式加载 + Debug.Log($"成功导入 {files.Length} 个文件"); + } + } + + #endregion } } \ No newline at end of file diff --git a/Assets/00.StaryEvoTools/Runtime/Tools/YooAssetFileSystem.cs b/Assets/00.StaryEvoTools/Runtime/Tools/YooAssetFileSystem.cs index 6355189..3d52684 100644 --- a/Assets/00.StaryEvoTools/Runtime/Tools/YooAssetFileSystem.cs +++ b/Assets/00.StaryEvoTools/Runtime/Tools/YooAssetFileSystem.cs @@ -29,13 +29,14 @@ namespace Stary.Evo public static InitializeParameters WebInitializeParameter(string packageName) { - var cacheFileSystemParams = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(null, - $"{Application.persistentDataPath}/DownloadedContent/{packageName}"); - cacheFileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true); - cacheFileSystemParams.AddParameter(FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST, true); + var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters(); + // var cacheFileSystemParams = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(null, + // $"{Application.persistentDataPath}/DownloadedContent/{packageName}"); + webServerFileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true); + webServerFileSystemParams.AddParameter(FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST, true); var initParameters = new WebPlayModeParameters(); - initParameters.WebServerFileSystemParameters = cacheFileSystemParams; + initParameters.WebServerFileSystemParameters = webServerFileSystemParams; return initParameters; } public static InitializeParameters EditorSimulateInitializeParameter(string packageName) diff --git a/Assets/00.StaryEvoTools/package.json b/Assets/00.StaryEvoTools/package.json index c48518d..91a5b0e 100644 --- a/Assets/00.StaryEvoTools/package.json +++ b/Assets/00.StaryEvoTools/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.tools", - "version": "1.4.9", + "version": "1.4.10", "displayName": "00.StaryEvo.Tools", "description": "This is an Framework package(后台服务器版本,端口9527)", "unity": "2021.3",