From ef17cd851b56abec77a3a7f25ef87800afec7cbd Mon Sep 17 00:00:00 2001 From: Weekend <872285171@qq.com> Date: Sat, 18 Nov 2023 21:44:24 +0800 Subject: [PATCH 1/3] =?UTF-8?q?add:=E4=BC=98=E5=8C=96=E5=88=86=E5=8C=85?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ResourceManager.Services.cs | 27 +++++++++++-------- .../Modules/ResourceModule/ResourceManager.cs | 4 +-- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs index ea94cc1b..7e09b9d5 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs @@ -12,7 +12,7 @@ namespace TEngine private class GameDecryptionServices : IDecryptionServices { private const byte OffSet = 32; - + public ulong LoadFromFileOffset(DecryptFileInfo fileInfo) { return OffSet; @@ -25,7 +25,8 @@ namespace TEngine public Stream LoadFromStream(DecryptFileInfo fileInfo) { - BundleStream bundleStream = new BundleStream(fileInfo.FilePath, FileMode.Open, FileAccess.Read, FileShare.Read); + BundleStream bundleStream = + new BundleStream(fileInfo.FilePath, FileMode.Open, FileAccess.Read, FileShare.Read); return bundleStream; } @@ -34,7 +35,7 @@ namespace TEngine return 1024; } } - + /// /// 默认的分发资源查询服务类 /// @@ -44,40 +45,43 @@ namespace TEngine { throw new NotImplementedException(); } + public bool QueryDeliveryFiles(string packageName, string fileName) { return false; } } - + /// /// 远程文件查询服务类。 /// - private class RemoteServices: IRemoteServices + private class RemoteServices : IRemoteServices { private readonly string _defaultHostServer; private readonly string _fallbackHostServer; + private string _packageName; - public RemoteServices() + public RemoteServices(string packageName) { _defaultHostServer = SettingsUtils.FrameworkGlobalSettings.HostServerURL; _fallbackHostServer = SettingsUtils.FrameworkGlobalSettings.FallbackHostServerURL; + _packageName = packageName; } - + public RemoteServices(string defaultHostServer, string fallbackHostServer) { _defaultHostServer = defaultHostServer; _fallbackHostServer = fallbackHostServer; } - + public string GetRemoteMainURL(string fileName) { - return $"{_defaultHostServer}/{fileName}"; + return $"{_defaultHostServer}/{_packageName}/{fileName}"; } public string GetRemoteFallbackURL(string fileName) { - return $"{_fallbackHostServer}/{fileName}"; + return $"{_defaultHostServer}/{_packageName}/{fileName}"; } } } @@ -86,7 +90,8 @@ namespace TEngine { public const byte KEY = 128; - public BundleStream(string path, FileMode mode, FileAccess access, FileShare share) : base(path, mode, access, share) + public BundleStream(string path, FileMode mode, FileAccess access, FileShare share) : base(path, mode, access, + share) { } diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs index 4893dd9f..47c9cd3a 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs @@ -384,7 +384,7 @@ namespace TEngine createParameters.DecryptionServices = new GameDecryptionServices(); createParameters.BuildinQueryServices = new BuiltinQueryServices(); createParameters.DeliveryQueryServices = new DefaultDeliveryQueryServices(); - createParameters.RemoteServices = new RemoteServices(); + createParameters.RemoteServices = new RemoteServices(targetPackageName); initializationOperation = package.InitializeAsync(createParameters); } @@ -395,7 +395,7 @@ namespace TEngine var createParameters = new WebPlayModeParameters(); createParameters.DecryptionServices = new GameDecryptionServices(); createParameters.BuildinQueryServices = new BuiltinQueryServices(); - createParameters.RemoteServices = new RemoteServices(); + createParameters.RemoteServices = new RemoteServices(targetPackageName); initializationOperation = package.InitializeAsync(createParameters); } From 69be3cfa23435aaa23d0d69bf2ba64dc6ab966fa Mon Sep 17 00:00:00 2001 From: Weekend <872285171@qq.com> Date: Sun, 19 Nov 2023 01:41:47 +0800 Subject: [PATCH 2/3] =?UTF-8?q?update:=E7=BB=9F=E4=B8=80WebGL=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E4=B8=8E=E5=85=B6=E4=BB=96=E5=B9=B3=E5=8F=B0=E7=9A=84?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E7=83=AD=E6=9B=B4=E8=B5=84=E6=BA=90=E5=BC=95?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Modules/ResourceModule/BuiltinQueryMgr.cs | 12 ---------- .../ResourceManager.Services.cs | 23 +++++++++++++++++++ .../Modules/ResourceModule/ResourceManager.cs | 5 +++- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/BuiltinQueryMgr.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/BuiltinQueryMgr.cs index 83c75f91..55d686b6 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/BuiltinQueryMgr.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/BuiltinQueryMgr.cs @@ -10,18 +10,6 @@ namespace TEngine public const string RootFolderName = "yoo"; } - /// - /// 内置文件查询服务类。 - /// - public class BuiltinQueryServices : IBuildinQueryServices - { - public bool QueryStreamingAssets(string packageName, string fileName) - { - // 注意:fileName包含文件格式 - return BuiltinQueryMgr.FileExists(packageName, fileName); - } - } - #if UNITY_EDITOR /// /// 内置资源资源查询帮助类。 diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs index 7e09b9d5..011f0bd0 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs @@ -84,6 +84,29 @@ namespace TEngine return $"{_defaultHostServer}/{_packageName}/{fileName}"; } } + + /// + /// 内置文件查询服务类。 + /// + public class BuiltinQueryServices : IBuildinQueryServices + { + public bool QueryStreamingAssets(string packageName, string fileName) + { + // 注意:fileName包含文件格式 + return BuiltinQueryMgr.FileExists(packageName, fileName); + } + } + + /// + /// WebGL内置文件查询服务类。WebGL平台不需要内置查询,直接使用远程热更资源。 + /// + public class WebGLBuiltinQueryServices : IBuildinQueryServices + { + public bool QueryStreamingAssets(string packageName, string fileName) + { + return true; + } + } } public class BundleStream : FileStream diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs index 47c9cd3a..048317f6 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs @@ -394,8 +394,11 @@ namespace TEngine YooAssets.SetCacheSystemDisableCacheOnWebGL(); var createParameters = new WebPlayModeParameters(); createParameters.DecryptionServices = new GameDecryptionServices(); - createParameters.BuildinQueryServices = new BuiltinQueryServices(); + createParameters.BuildinQueryServices = new WebGLBuiltinQueryServices(); createParameters.RemoteServices = new RemoteServices(targetPackageName); + // WebGL运行模式下,直接使用远程热更资源。 + createParameters.BuildinRootDirectory = SettingsUtils.FrameworkGlobalSettings.HostServerURL; + createParameters.SandboxRootDirectory = SettingsUtils.FrameworkGlobalSettings.HostServerURL; initializationOperation = package.InitializeAsync(createParameters); } From 866c440479a6a3134611b99014ed9efa8a2ccf54 Mon Sep 17 00:00:00 2001 From: Weekend <872285171@qq.com> Date: Sun, 19 Nov 2023 02:01:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?add:=E5=88=9D=E5=A7=8B=E5=8C=96Package?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=B8=AD=E5=A2=9E=E5=8A=A0webgl=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=9B=B4=E6=96=B0update=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Main/Procedure/ProcedureInitPackage.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs index b87efb4f..69d2081d 100644 --- a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs +++ b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs @@ -29,7 +29,8 @@ namespace GameMain private async UniTaskVoid InitPackage(ProcedureOwner procedureOwner) { - if (GameModule.Resource.PlayMode == EPlayMode.HostPlayMode) + if (GameModule.Resource.PlayMode == EPlayMode.HostPlayMode || + GameModule.Resource.PlayMode == EPlayMode.WebPlayMode) { if (SettingsUtils.EnableUpdateData()) { @@ -44,7 +45,8 @@ namespace GameMain if (!string.IsNullOrEmpty(updateData.FallbackHostServerURL)) { - SettingsUtils.FrameworkGlobalSettings.FallbackHostServerURL = updateData.FallbackHostServerURL; + SettingsUtils.FrameworkGlobalSettings.FallbackHostServerURL = + updateData.FallbackHostServerURL; } } } @@ -60,9 +62,9 @@ namespace GameMain { //热更新阶段文本初始化 LoadText.Instance.InitConfigData(null); - + GameEvent.Send(RuntimeId.ToRuntimeId("RefreshVersion")); - + EPlayMode playMode = GameModule.Resource.PlayMode; // 编辑器模式。 @@ -107,7 +109,9 @@ namespace GameMain // 打开启动UI。 UILoadMgr.Show(UIDefine.UILoadUpdate, $"资源初始化失败!"); - UILoadTip.ShowMessageBox($"资源初始化失败!点击确认重试 \n \n 原因{initializationOperation.Error}", MessageShowType.TwoButton, + UILoadTip.ShowMessageBox( + $"资源初始化失败!点击确认重试 \n \n 原因{initializationOperation.Error}", + MessageShowType.TwoButton, LoadStyle.StyleEnum.Style_Retry , () => { Retry(procedureOwner); }, UnityEngine.Application.Quit); }