From 60f1264d5129b719eaeee0ea73e6fe1d1463a08d Mon Sep 17 00:00:00 2001
From: stary <834207172@qq.COM>
Date: Sat, 18 Apr 2026 01:00:51 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90m=E3=80=91=E5=A2=9E=E5=8A=A0web?=
=?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88=E6=9A=82=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Tool/WebRequest/WebRequestSystem.cs | 10 +-
.../Responses/ResDmainResponse.cs | 9 ++
.../Editor/Build/AutoBuildPackage.cs | 8 +-
.../Editor/Build/BuildReport.cs | 2 +-
.../BuildAsset/BuildAssetDataSetting.cs | 6 +
.../Editor/BuildAsset/BuildAssetWindow.cs | 44 ++++--
.../ChangePlayerMode/ChangeHotUpdateMode.cs | 76 -----------
.../ChangeHotUpdateMode.cs.meta | 3 -
.../ChangePlayerMode/ChangePlayerMode.cs | 8 +-
.../Editor/BuildAsset/CreatAssetWindow.cs | 12 +-
.../Editor/BuildAsset/CreatDomainDirectory.cs | 10 --
.../Editor/BuildAsset/OneKeyBuildWindow.cs | 15 +-
.../Editor/MarkAdressable/MarkAdressable.cs | 24 ++--
.../Resources/DeviceXEventPanel.prefab | 8 +-
.../HybridLoad/Fsm/HotFixStartState.cs | 128 +++++++++++++-----
.../Tools/PanelSystem/Base/BasePanel.cs | 7 -
.../Tools/PanelSystem/Base/BaseRenderPanel.cs | 7 -
.../Runtime/Tools/RemoteServices.cs | 36 +++++
.../Runtime/Tools/RemoteServices.cs.meta | 3 +
.../Runtime/Tools/YooAssetFileSystem.cs | 11 ++
20 files changed, 227 insertions(+), 200 deletions(-)
delete mode 100644 Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs
delete mode 100644 Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs.meta
create mode 100644 Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs
create mode 100644 Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs.meta
diff --git a/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs b/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs
index e52bb1b..e71de57 100644
--- a/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs
+++ b/Assets/00.StaryEvo/Runtime/Tool/WebRequest/WebRequestSystem.cs
@@ -144,7 +144,7 @@ namespace Stary.Evo
/// 获取Token值的服务URL地址(很重要)
/// 传入请求的参数,此处参数为JOSN格式
///
- public static async Task PostFile(string url, string[] path,Action uploadProgress = null)
+ public static async Task PostFile(string url, string[] path,Dictionary headers = null,Action uploadProgress = null)
{
if (!GetTokenState())
{
@@ -170,6 +170,14 @@ namespace Stary.Evo
using UnityWebRequest webRequest = UnityWebRequest.Post(url, form);
webRequest.SetRequestHeader("Authorization", authorization);
+ if (headers != null)
+ {
+ foreach (var header in headers)
+ {
+ webRequest.SetRequestHeader(header.Key, header.Value);
+ }
+
+ }
webRequest.disposeUploadHandlerOnDispose = true;
webRequest.disposeDownloadHandlerOnDispose = true;
webRequest.disposeCertificateHandlerOnDispose = true;
diff --git a/Assets/00.StaryEvo/Runtime/Tool/WebRequest/_netCoreEntity/Responses/ResDmainResponse.cs b/Assets/00.StaryEvo/Runtime/Tool/WebRequest/_netCoreEntity/Responses/ResDmainResponse.cs
index 753a815..63024a2 100644
--- a/Assets/00.StaryEvo/Runtime/Tool/WebRequest/_netCoreEntity/Responses/ResDmainResponse.cs
+++ b/Assets/00.StaryEvo/Runtime/Tool/WebRequest/_netCoreEntity/Responses/ResDmainResponse.cs
@@ -17,4 +17,13 @@ namespace Stary.Evo
public string PackageVersion { get; set; }
public string DocumentFileId { get; set; }
}
+
+ public struct DocumentFileResponse
+ {
+ public string type { get; set; }
+ public string fileName { get; set; }
+ public string fileType { get; set; }
+ public string filePath { get; set; }
+ public string id { get; set; }
+ }
}
\ No newline at end of file
diff --git a/Assets/00.StaryEvoTools/Editor/Build/AutoBuildPackage.cs b/Assets/00.StaryEvoTools/Editor/Build/AutoBuildPackage.cs
index 60b804c..c0c1480 100644
--- a/Assets/00.StaryEvoTools/Editor/Build/AutoBuildPackage.cs
+++ b/Assets/00.StaryEvoTools/Editor/Build/AutoBuildPackage.cs
@@ -38,14 +38,12 @@ namespace Stary.Evo.Editor
///
public static void OneClickMark(List oneKeyBuildEntities)
{
-#if HotUpdate
//打dll
CompileDllCommand.CompileDllActiveBuildTarget();
//拷贝dll
MarkAdressable.AddHotfixAddressableDllAll(oneKeyBuildEntities);
//标记全部资源
MarkAdressable.AddMarkAll(oneKeyBuildEntities);
-#endif
}
public static void OneShaderMark(Action complete)
@@ -59,7 +57,6 @@ namespace Stary.Evo.Editor
///
public static void OneShaderMark(List oneKeyBuildEntities,Action complete)
{
-#if HotUpdate
//标记全部资源
foreach (var oneKeyBUildEntity in oneKeyBuildEntities)
{
@@ -72,9 +69,6 @@ namespace Stary.Evo.Editor
});
}
}
-
-
-#endif
}
public static void OneUpdatePackageVersionBuild()
@@ -208,7 +202,7 @@ namespace Stary.Evo.Editor
if (buildAssetDataSetting != null)
{
string zipFilePath = BuildAssetWindow.BuildZip(buildAssetDataSetting);
- await BuildAssetWindow.UpdateFileDataResDomain(buildAssetDataSetting, zipFilePath);
+ await BuildAssetWindow.UpdateFileDataResDomain(buildAssetDataSetting, new []{zipFilePath});
await Task.Delay(1000);
EditorUtility.ClearProgressBar();
}
diff --git a/Assets/00.StaryEvoTools/Editor/Build/BuildReport.cs b/Assets/00.StaryEvoTools/Editor/Build/BuildReport.cs
index b8dd38c..579fd58 100644
--- a/Assets/00.StaryEvoTools/Editor/Build/BuildReport.cs
+++ b/Assets/00.StaryEvoTools/Editor/Build/BuildReport.cs
@@ -30,7 +30,7 @@ namespace Stary.Evo.Editor
Debug.Log("切换为[HOST_PLAYMODE]模式");
break;
case 1:
- ChangePlayerSchema.SetPlayerMode(PLayerMode.HOST_PLAYMODE);
+ ChangePlayerSchema.SetPlayerMode(PLayerMode.LOCAL_PLAYMODE);
Debug.Log("切换为[HOST_PLAYMODE]模式");
break;
case 2:
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetDataSetting.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetDataSetting.cs
index fee276f..7cd5b32 100644
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetDataSetting.cs
+++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetDataSetting.cs
@@ -13,8 +13,14 @@ namespace Stary.Evo.Editor
{
public void OnEnable()
{
+#if UNITY_WEBGL
+ viewer = new ScriptableBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(),
+ packageVersion);
+#else
viewer = new MixedBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(),
packageVersion);
+#endif
+
oldVersionX = packageVersionX;
oldVersionY = packageVersionY;
oldVersionZ = packageVersionZ;
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs
index 0f2e808..1be0595 100644
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs
+++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs
@@ -11,10 +11,8 @@ using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Threading.Tasks;
-#if HotUpdate
using HybridCLR.Editor;
using HybridCLR.Editor.Commands;
-#endif
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Sirenix.OdinInspector;
@@ -34,13 +32,6 @@ namespace Stary.Evo.Editor
[MenuItem("Evo/Dev/资源打包工具", false, 2)]
static void ShowWindows()
{
-#if NotUpdate
- if (EditorUtility.DisplayDialog("提示", "当前为非热更模式,不支持热更打包功能,是否切换热更模式", "是", "否"))
- {
- ChangeHotUpdateSchema.SetHotUpdateMode(HotUpdateMode.HotUpdate);
- }
-
-#elif HotUpdate
if (CreatAssetWindow.GetCreatDomainAll().Count <= 0)
{
EditorUtility.DisplayDialog("提示", "不存在Domain元素,无法打开此面板,请先创建Domain元素", "确定");
@@ -49,7 +40,6 @@ namespace Stary.Evo.Editor
window = (BuildAssetWindow)EditorWindow.GetWindow(typeof(BuildAssetWindow));
window.Show();
-#endif
}
protected override void OnDisable()
@@ -95,17 +85,17 @@ namespace Stary.Evo.Editor
#region HyBridCLRBuild
+#if !UNITY_WEBGL
[BoxGroup("Build", showLabel: false)]
[Title("打包dll(子包仅打一次)", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("Build/HyBridClrBuildEntity"), HideLabel]
public BuildAssetEntity hyBridClrBuildEntity =
new BuildAssetEntity("HyBridCLRBuild", "DllBuildTarget", () =>
{
-#if HotUpdate
//PrebuildCommand.GenerateAll();
CompileDllCommand.CompileDllActiveBuildTarget();
-#endif
});
+#endif
#endregion
@@ -230,8 +220,19 @@ namespace Stary.Evo.Editor
$"开始上传至服务器[{selectedPackageNames}],,版本号为[{BuildAssetDataSetting.packageVersion}", "Yes", "No"))
{
// 新增:打包为zip的逻辑
+ List fileList = new List();
+#if UNITY_WEBGL
+ var outputPackageDirectory =
+ $"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{selectedPackageNames}";
+ //拷贝目录
+ string outFilePath = $"{outputPackageDirectory}/{BuildAssetDataSetting.packageVersion}";
+
+ FilesUtils.GetFiles(outFilePath, ref fileList);
+#else
string zipFilePath = BuildZip(BuildAssetDataSetting);
- await UpdateFileDataResDomain(BuildAssetDataSetting, zipFilePath);
+ fileList.Add(zipFilePath);
+#endif
+ await UpdateFileDataResDomain(BuildAssetDataSetting, fileList.ToArray());
await Task.Delay(1000);
EditorUtility.ClearProgressBar();
}
@@ -355,10 +356,23 @@ namespace Stary.Evo.Editor
File.Copy(sourcePath, destinationPath);
}
- public static async Task UpdateFileDataResDomain(BuildAssetDataSetting setting, string zipFilePath)
+ public static async Task UpdateFileDataResDomain(BuildAssetDataSetting setting, string[] zipFiles)
{
string ip = CustomEditorPrefs.GetString("ip");
- var messageEntity = await WebRequestSystem.PostFile(ip + "/FileLoad/UpLoadFile", new[] { zipFilePath });
+
+ Dictionary headers = null;
+#if UNITY_WEBGL
+ headers = new Dictionary()
+ {
+ { "folderName", setting.packageName },
+ { "folderVersion", setting.packageVersion },
+ };
+#endif
+
+
+ var messageEntity = await WebRequestSystem.PostFile(ip + "/FileLoad/UpLoadFile", zipFiles, headers);
+
+
EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(上传zip文件)", 0.5f);
if (messageEntity.code == 200)
{
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs
deleted file mode 100644
index 156db45..0000000
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System;
-using System.Linq;
-using UnityEditor;
-using UnityEngine;
-
-namespace Stary.Evo.Editor
-{
- public class ChangeHotUpdateSchema
- {
- public static HotUpdateMode HotUpdateMode
- {
- get => _hotUpdate;
- set => SetHotUpdateMode(value);
- }
-
- private static HotUpdateMode _hotUpdate;
-
- private const string EditorNotUpdateMode = "Evo/Schema/ChangeHotUpdate/NOTUPDARE(非热更模式)";
- private const string EditorHotUpdateMode = "Evo/Schema/ChangeHotUpdate/HOTUPDATE(热更模式)";
-
- [MenuItem(EditorNotUpdateMode)]
- private static void SetNotUpdateMode() => SetHotUpdateMode(HotUpdateMode.NotUpdate);
-
- [MenuItem(EditorHotUpdateMode)]
- private static void SetHotUpdateMode() => SetHotUpdateMode(HotUpdateMode.HotUpdate);
-
- // [MenuItem(WebPlayMode)]
- // private static void SetWebMode() => SetPlayerMode(HotUpdateMode.WEB_PLAYMODE);
-
- [MenuItem(EditorNotUpdateMode, true)]
- private static bool ValidateModeMenu()
- {
- string platform = CustomEditorPrefs.GetString("ChangeHotUpdateSchema");
- Menu.SetChecked(EditorNotUpdateMode, platform == HotUpdateMode.NotUpdate.ToString());
- Menu.SetChecked(EditorHotUpdateMode, platform == HotUpdateMode.HotUpdate.ToString());
- //Menu.SetChecked(WebPlayMode, platform == HotUpdateMode.WEB_PLAYMODE.ToString());
- Debug.Log("ChangeHotUpdateSchema:"+platform);
- return true;
- }
-
- public static void SetHotUpdateMode(HotUpdateMode mode)
- {
- // 清除所有旧模式定义
- var currentTarget = EditorUserBuildSettings.selectedBuildTargetGroup;
- if (currentTarget == BuildTargetGroup.Unknown) return;
-
- var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentTarget)
- .Split(';')
- .Where(d => !Enum.GetNames(typeof(HotUpdateMode)).Contains(d))
- .ToList();
-
- // 添加新模式
- defines.Add(mode.ToString());
- PlayerSettings.SetScriptingDefineSymbolsForGroup(currentTarget, string.Join(";", defines));
- _hotUpdate = mode;
- CustomEditorPrefs.SetString("ChangeHotUpdateSchema", _hotUpdate.ToString());
-
- ValidateModeMenu();
- AssetDatabase.Refresh();
- // 添加解决方案文件重新生成逻辑
- EditorApplication.delayCall += () =>
- {
- UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation();
- Debug.Log($"当前编译符号: {string.Join(";", defines)}"); // 添加调试日志
- };
- }
- }
-
- public enum HotUpdateMode
- {
- //非热更模式,
- NotUpdate,
- //热更模式
- HotUpdate,
- }
-}
\ No newline at end of file
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs.meta b/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs.meta
deleted file mode 100644
index 735e809..0000000
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeHotUpdateMode.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 7d18419d2d9c488687f9aff50cbd8357
-timeCreated: 1751423025
\ No newline at end of file
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangePlayerMode.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangePlayerMode.cs
index 5ac4dea..c7ab4f8 100644
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangePlayerMode.cs
+++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangePlayerMode.cs
@@ -26,8 +26,8 @@ namespace Stary.Evo.Editor
private static void SetHostMode() => SetPlayerMode(PLayerMode.HOST_PLAYMODE);
[MenuItem(LocalPlayMode, false,3)]
private static void SetLocalMode() => SetPlayerMode(PLayerMode.LOCAL_PLAYMODE);
- // [MenuItem(WebPlayMode)]
- // private static void SetWebMode() => SetPlayerMode(PLayerMode.WEB_PLAYMODE);
+ [MenuItem(WebPlayMode)]
+ private static void SetWebMode() => SetPlayerMode(PLayerMode.WEB_PLAYMODE);
[MenuItem(EditorSimulateMode, true,3)]
private static bool ValidateModeMenu()
@@ -36,7 +36,7 @@ namespace Stary.Evo.Editor
Menu.SetChecked(EditorSimulateMode, platform == PLayerMode.EDITOR_SIMULATEMODE.ToString());
Menu.SetChecked(HostPlayMode, platform == PLayerMode.HOST_PLAYMODE.ToString());
Menu.SetChecked(LocalPlayMode, platform == PLayerMode.LOCAL_PLAYMODE.ToString());
- //Menu.SetChecked(WebPlayMode, platform == PLayerMode.WEB_PLAYMODE.ToString());
+ Menu.SetChecked(WebPlayMode, platform == PLayerMode.WEB_PLAYMODE.ToString());
Debug.Log($"ChangePlayerSchema:{platform}");
return true;
}
@@ -79,6 +79,6 @@ namespace Stary.Evo.Editor
//本地运行模式
LOCAL_PLAYMODE,
// //web运行模式
- // WEB_PLAYMODE
+ WEB_PLAYMODE
}
}
\ No newline at end of file
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatAssetWindow.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatAssetWindow.cs
index 7aa8c34..4ebd7b7 100644
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatAssetWindow.cs
+++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatAssetWindow.cs
@@ -2,10 +2,8 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-#if HotUpdate
using HybridCLR.Editor;
using HybridCLR.Editor.Settings;
-#endif
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using UnityEditor;
@@ -119,8 +117,10 @@ namespace Stary.Evo.Editor
CreatDirectory(resPath + "/Audios");
//创建Config文件夹
CreatDirectory(resPath + "/Config");
+ #if !UNITY_WEBGL
//创建Dll文件夹
CreatDirectory(resPath + "/Dll");
+ #endif
//创建Prefabs文件夹
CreatDirectory(resPath + "/Prefabs");
//创建Scenes文件夹
@@ -174,7 +174,6 @@ namespace Stary.Evo.Editor
domainClassName = domainClassName.Replace('.', '_');
string architectureClassName = $"{domain}Architecture";
architectureClassName = architectureClassName.Replace('.', '_');
-#if HotUpdate
//模块配置资源
DomainConfig moduleConfig = CreateInstance();
moduleConfig.domain = domain;
@@ -221,7 +220,6 @@ namespace Stary.Evo.Editor
HybridCLRSettings.Instance.hotUpdateAssemblyDefinitions = assemblies.ToArray();
HybridCLRSettings.Save();
}
-#endif
AssetDatabase.SaveAssets();
@@ -362,8 +360,12 @@ namespace Stary.Evo.Editor
CreatDirectory(resPath + "/Audios");
//创建Config文件夹
CreatDirectory(resPath + "/Config");
- //创建Dll文件夹
+ #if !UNITY_WEBGL
+ {
+ //创建Dll文件夹
CreatDirectory(resPath + "/Dll");
+ }
+ #endif
//创建Prefabs文件夹
CreatDirectory(resPath + "/Prefabs");
//创建Scenes文件夹
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatDomainDirectory.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatDomainDirectory.cs
index 67a0ab4..bca3d87 100644
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatDomainDirectory.cs
+++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/CreatDomainDirectory.cs
@@ -36,16 +36,6 @@ namespace Stary.Evo
}
}
- if (CustomEditorPrefs.GetString("ChangeHotUpdateSchema") == "")
- {
- ChangeHotUpdateSchema.SetHotUpdateMode(HotUpdateMode.NotUpdate);
- }
- else
- {
- ChangeHotUpdateSchema.SetHotUpdateMode(
- Enum.Parse(CustomEditorPrefs.GetString("ChangeHotUpdateSchema")));
- }
-
if (CustomEditorPrefs.GetString("ChangePlayerSchema") == "")
{
ChangePlayerSchema.SetPlayerMode(PLayerMode.EDITOR_SIMULATEMODE);
diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/OneKeyBuildWindow.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/OneKeyBuildWindow.cs
index 0d8ad35..954e1b1 100644
--- a/Assets/00.StaryEvoTools/Editor/BuildAsset/OneKeyBuildWindow.cs
+++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/OneKeyBuildWindow.cs
@@ -1,9 +1,7 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
-#if HotUpdate
using HybridCLR.Editor.Commands;
-#endif
using Newtonsoft.Json;
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
@@ -18,15 +16,10 @@ namespace Stary.Evo.Editor
[MenuItem("Evo/Dev/(一键)打包工具",false, 3)]
static void Init()
{
-#if NotUpdate
- if (EditorUtility.DisplayDialog("提示", "当前为非热更模式,不支持热更打包功能,是否切换热更模式", "是", "否"))
- {
- ChangeHotUpdateSchema.SetHotUpdateMode(HotUpdateMode.HotUpdate);
- }
-#elif HotUpdate
+
var window = (OneKeyBuildWindow)EditorWindow.GetWindow(typeof(OneKeyBuildWindow));
window.Show();
-#endif
+
}
[Title("全选"), OnValueChanged("OneKeyBuildEvent"), HideLabel]
@@ -53,20 +46,16 @@ namespace Stary.Evo.Editor
[Button("(一键)标记选择资源", ButtonSizes.Large)]
public void OneClickMark()
{
-#if HotUpdate
AutoBuildPackage.OneClickMark(OneKeyBuildEntities);
EditorUtility.DisplayDialog("提示", $"标记所有资源完成!", "确定");
-#endif
}
[Button("(一键)收集shader【材质异常或资源修改】", ButtonSizes.Large)]
public void OneShaderMark()
{
-#if HotUpdate
EditorTools.ClearUnityConsole();
AutoBuildPackage.OneShaderMark(OneKeyBuildEntities,(domainName)=>
ShowNotification(new GUIContent($"收集【{domainName}】的shader【材质异常或资源修改】!"), 2f));
-#endif
}
[Button("(一键)获取服务器版本", ButtonSizes.Large)]
diff --git a/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs b/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs
index ff351ba..d293223 100644
--- a/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs
+++ b/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs
@@ -2,11 +2,8 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-
-#if HotUpdate
using HybridCLR.Editor;
using HybridCLR.Editor.Commands;
-#endif
using UnityEditor;
using UnityEditor.U2D;
using UnityEngine;
@@ -18,7 +15,9 @@ namespace Stary.Evo.Editor
public class MarkAdressable
{
private static AssetBundleCollectorPackage package;
+#if !UNITY_WEBGL
private static AssetBundleCollectorPackage packageRawFile;
+#endif
private static Dictionary addressDic = new Dictionary();
@@ -27,7 +26,9 @@ namespace Stary.Evo.Editor
new Dictionary();
private static string _packageName;
+#if !UNITY_WEBGL
private static string[] rawFiles = new[] { "Video" };
+#endif
public static string DomainRoot
{
@@ -56,7 +57,6 @@ namespace Stary.Evo.Editor
private static void CopyDllHotUpdateAssembly(string domain, string target)
{
-#if HotUpdate
//读取打包dll位置
string hotUpdateDir =
$"{SettingsUtil.HybridCLRSettings.hotUpdateDllCompileOutputRootDir}/{EditorUserBuildSettings.activeBuildTarget}";
@@ -89,12 +89,10 @@ namespace Stary.Evo.Editor
FileUtility.Copy(hotfixDllPathPdb, hotfixDllPathPdbTarget, true);
}
}
-#endif
}
private static void CopyDllStrippedAOTDllOutputRootDir(string target)
{
-#if HotUpdate
//读取打包dll位置
string hotUpdateDir =
$"{SettingsUtil.HybridCLRSettings.strippedAOTDllOutputRootDir}/{EditorUserBuildSettings.activeBuildTarget}";
@@ -105,7 +103,6 @@ namespace Stary.Evo.Editor
$"{target}/Dll/{EditorUserBuildSettings.activeBuildTarget}/{dll}.bytes";
FileUtility.Copy(hotfixDllPath, hotfixDllPathTarget, true);
}
-#endif
}
public static void AddMarkAll(List oneKeyBUildEntities)
@@ -145,7 +142,9 @@ namespace Stary.Evo.Editor
public static void AddDomainMark()
{
+#if !UNITY_WEBGL
AddHotfixAddressableDll();
+#endif
//清空用户旧数据
string configPath =
@@ -185,7 +184,9 @@ namespace Stary.Evo.Editor
package = CreatePackage(_packageName);
+#if !UNITY_WEBGL
packageRawFile = CreatePackage($"{_packageName}_RawFile");
+#endif
//检测Packages是否存在Group
foreach (var info in dirs)
{
@@ -195,7 +196,7 @@ namespace Stary.Evo.Editor
{
continue;
}
-
+#if !UNITY_WEBGL
if (rawFiles.Contains(groupName))
{
AddGroup(packageRawFile, groupName);
@@ -204,7 +205,9 @@ namespace Stary.Evo.Editor
{
AddGroup(package, groupName);
}
-
+#else
+ AddGroup(package, groupName);
+#endif
AutoMarkRootAddress(info);
// if (info.Name != "SpriteAtlas" && info.Name != "Atlas")
// AutoMark(info.Name);
@@ -457,13 +460,14 @@ namespace Stary.Evo.Editor
AssetTags = groupName,
};
+#if !UNITY_WEBGL
////TODO 暂时不设置
//如果是video目录,设置
if (rawFiles.Contains(groupName))
{
collector.PackRuleName = nameof(PackVideoFile);
}
-
+#endif
YooAsset.Editor.AssetBundleCollectorSettingData.CreateCollector(group, collector);
Debug.Log("GetAssetAddress:" + GetAssetAddress(file));
AddAddressInfo(file, GetAssetAddress(file));
diff --git a/Assets/00.StaryEvoTools/Resources/DeviceXEventPanel.prefab b/Assets/00.StaryEvoTools/Resources/DeviceXEventPanel.prefab
index 4256241..a032cf5 100644
--- a/Assets/00.StaryEvoTools/Resources/DeviceXEventPanel.prefab
+++ b/Assets/00.StaryEvoTools/Resources/DeviceXEventPanel.prefab
@@ -183,8 +183,8 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8578243747545439734}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0.5}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -9.5}
m_LocalScale: {x: 0.0042, y: 0.0042, z: 0.0042}
m_ConstrainProportionsScale: 0
m_Children:
@@ -193,7 +193,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: -0.000091552734, y: -0.1000061}
+ m_AnchoredPosition: {x: -0.00048828125, y: 0.94000244}
m_SizeDelta: {x: 20, y: 3}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!223 &7581257579931840423
@@ -241,7 +241,7 @@ MonoBehaviour:
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
- m_PresetInfoIsWorld: 1
+ m_PresetInfoIsWorld: 0
--- !u!114 &9212297630861054377
MonoBehaviour:
m_ObjectHideFlags: 0
diff --git a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs
index 1c0e5c1..69ff5f5 100644
--- a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs
+++ b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs
@@ -52,7 +52,6 @@ namespace Stary.Evo
//登录
if ((AppConfig.IsLogin))
{
- await GetServerVersion();
await HOST_PLAYMODE(package);
isInitSuccess = await HOST_PLAYMODE(packageRawFile);
}
@@ -78,24 +77,10 @@ namespace Stary.Evo
await UpdateLocalPackage(packageRawFile);
await LoadHotfixSettings();
#elif WEB_PLAYMODE
- // IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
- // var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
- // var webRemoteFileSystemParams =
- // FileSystemParameters.CreateDefaultWebRemoteFileSystemParameters(remoteServices); //支持跨域下载
- //
- // var initParameters = new WebPlayModeParameters();
- // initParameters.WebServerFileSystemParameters = webServerFileSystemParams;
- // initParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
- //
- // var initOperation = package.InitializeAsync(initParameters);
- // await initOperation;
- //
- // if (initOperation.Status == EOperationStatus.Succeed)
- // Debug.Log("UnityEvo:资源包初始化成功!");
- // else
- // Debug.LogError($"UnityEvo:资源包初始化失败:{initOperation.Error}");
- Debug.LogError($"UnityEvo:暂不支持");
+ await WEB_PLAYMODE(package);
+ await UpdateLocalPackage(package);
+ await LoadHotfixSettings();
#endif
}
@@ -119,6 +104,19 @@ namespace Stary.Evo
private async UniTask HOST_PLAYMODE(ResourcePackage package)
{
+ var resDmainResponse = await GetServerDomainVersion();
+ //获取当前版本
+ var oldVersion = CustomPlayerPrefs.GetString($"{AppConfig.PackageDomainName}_GAME_VERSION");
+ //版本不一致,开始下载
+ if (resDmainResponse.PackageVersion != oldVersion)
+ {
+ await Download(resDmainResponse.DocumentFileId);
+ CustomPlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION",resDmainResponse.PackageVersion);
+ }
+ else //版本一致,加载缓存资源
+ {
+ Debug.LogWarning($"UnityEvo:当前版本{oldVersion}资源版本一致,自动跳过更新...");
+ }
var initParams = YooAssetFileSystem.HostInitializeParameter(package.PackageName);
// initParameters.CacheFileSystemParameters = cacheFileSystemParams;
try
@@ -145,6 +143,36 @@ namespace Stary.Evo
return false;
}
+ private async UniTask WEB_PLAYMODE(ResourcePackage package)
+ {
+ var path = await GetServerVersionPath();
+ string defaultHostServer = $"{AppConfig.IpConfig}/StaticFiles{path}";
+ var initParams = YooAssetFileSystem.WebInitializeParameter(package.PackageName, defaultHostServer,"");
+ // initParameters.CacheFileSystemParameters = cacheFileSystemParams;
+ try
+ {
+ var initOperation = package.InitializeAsync(initParams);
+
+ await initOperation;
+
+ if (initOperation.Status == EOperationStatus.Succeed)
+ {
+ Debug.Log("UnityEvo:从Web加载资源包,初始化成功!");
+ return true;
+ }
+ else
+ {
+ Debug.LogWarning($"UnityEvo:从Web加载资源包,初始化失败:{initOperation.Error}");
+ }
+ }
+ catch (Exception e)
+ {
+ Debug.LogWarning($"UnityEvo:从Web加载资源包,初始化失败:{e}");
+ }
+
+ return false;
+ }
+
private async UniTask OFFLINE_PLAYMODE(ResourcePackage package)
{
var initParams = YooAssetFileSystem.OfflineInitializeParameter();
@@ -265,7 +293,7 @@ namespace Stary.Evo
#endif
}
- private async UniTask GetServerVersion()
+ private async UniTask GetServerDomainVersion()
{
// 新增平台判断代码
#if UNITY_EDITOR
@@ -290,31 +318,53 @@ namespace Stary.Evo
{
ResDmainResponse resDmainResponse =
JsonConvert.DeserializeObject(resDmainMessageEntity.data.ToString());
- //获取当前版本
- var oldVersion = CustomPlayerPrefs.GetString($"{AppConfig.PackageDomainName}_GAME_VERSION");
- //版本不一致,开始下载
- if (resDmainResponse.PackageVersion != oldVersion)
- {
- await Download(resDmainResponse.DocumentFileId);
- CustomPlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION",
- resDmainResponse.PackageVersion);
- }
- else //版本一致,加载缓存资源
- {
- Debug.LogWarning($"UnityEvo:当前版本{oldVersion}资源版本一致,自动跳过更新...");
- }
+
+ return resDmainResponse;
}
else
{
Debug.LogWarning($"UnityEvo:获取资源版本失败: 【{resDmainMessageEntity.message}】");
}
+
+ return default;
+ }
+
+ private async UniTask GetServerVersionPath()
+ {
+ var resDmainResponse = await GetServerDomainVersion();
+ if (!string.IsNullOrEmpty(resDmainResponse.DocumentFileId))
+ {
+ try
+ {
+ CustomPlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION",resDmainResponse.PackageVersion);
+ string url = $"{AppConfig.IpConfig}/FileLoad/QueryFileById";
+ var resDmainMessageEntity = await WebRequestSystem.Get(url, resDmainResponse.DocumentFileId);
+ if (resDmainMessageEntity.code == 200)
+ {
+ DocumentFileResponse documentFileResponse =
+ JsonConvert.DeserializeObject(resDmainMessageEntity.data.ToString());
+ return documentFileResponse.filePath;
+ }
+ else
+ {
+ Debug.LogWarning($"UnityEvo:获取资源版本失败: 【{resDmainMessageEntity.message}】");
+ }
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"UnityEvo:获取资源版本失败: 【{resDmainResponse.DocumentFileId}】: {e.Message}");
+ }
+ }
+ else
+ {
+ Debug.LogError($"UnityEvo:获取资源版本失败: 【{resDmainResponse.DocumentFileId}】");
+ }
+
+ return "";
}
private async UniTask UpdateLocalPackage(ResourcePackage package)
{
- //更新失败
-
- Debug.Log($"UnityEvo:开始加载本地缓存资源...");
// 获取上次成功记录的版本
string packageVersion =
@@ -351,7 +401,7 @@ namespace Stary.Evo
{
//初始化读取资源配置表
var package = YooAssets.GetPackage(AppConfig.PackageDomainName);
- if (AppConfig.PackageDomainName.Equals("Main") || HybridClREntrance.Global.stage == StageType.Developer)
+ if (HybridClREntrance.Global.stage == StageType.Developer)
{
//加载热更配置文件
var loadHotfixSettingsOp = package.LoadAssetAsync("Config_DomainConfig");
@@ -373,8 +423,12 @@ namespace Stary.Evo
{
Debug.LogError($"UnityEvo:【{package.PackageName}】加载DomainConfig为空,无法继续执行后续流程,请检查!!!");
}
-
+#if UNITY_WEBGL
+ await FsmSystem.SetCurState(nameof(ResStartState), domainConfig,domainConfig.className);
+#else
FsmSystem.SetCurState(nameof(HotFixDllState), domainConfig);
+#endif
+
}
else if (HybridClREntrance.Global.stage == StageType.Originality)
{
diff --git a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BasePanel.cs b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BasePanel.cs
index 39f1e33..6724691 100644
--- a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BasePanel.cs
+++ b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BasePanel.cs
@@ -4,9 +4,7 @@ using System.Threading.Tasks;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
-#if HotUpdate
using YooAsset;
-#endif
namespace Stary.Evo.UIFarme
{
@@ -201,7 +199,6 @@ namespace Stary.Evo.UIFarme
{
return activePanel.gameObject;
}
-#if HotUpdate
AssetHandle handle = null;
if (packageName == null)
{
@@ -223,10 +220,6 @@ namespace Stary.Evo.UIFarme
await handle.Task;
activePanel = GameObject.Instantiate(handle.AssetObject as GameObject, panelParent);
-#else
- GameObject handle = Resources.Load(panelName);
- activePanel = GameObject.Instantiate(handle, panelParent);
-#endif
activePanel.name = this.GetType().Name;
diff --git a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs
index c43c2de..06f17fd 100644
--- a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs
+++ b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs
@@ -4,9 +4,7 @@ using System.Threading.Tasks;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
-#if HotUpdate
using YooAsset;
-#endif
namespace Stary.Evo.UIFarme
{
@@ -163,7 +161,6 @@ namespace Stary.Evo.UIFarme
{
return activePanel.gameObject;
}
-#if HotUpdate
AssetHandle handle = null;
if (packageName == null)
{
@@ -185,10 +182,6 @@ namespace Stary.Evo.UIFarme
await handle.Task;
activePanel = GameObject.Instantiate(handle.AssetObject as GameObject, panelParent);
-#else
- GameObject handle = Resources.Load(panelName);
- activePanel = GameObject.Instantiate(handle, panelParent);
-#endif
activePanel.name = panelName;
diff --git a/Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs b/Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs
new file mode 100644
index 0000000..44c13a8
--- /dev/null
+++ b/Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs
@@ -0,0 +1,36 @@
+using YooAsset;
+namespace Stary.Evo
+{
+
+
+ public class RemoteServices : IRemoteServices
+ {
+ private readonly string _mainHost;
+ private readonly string _fallbackHost;
+
+ public RemoteServices(string mainHost, string fallbackHost = null)
+ {
+ _mainHost = mainHost.TrimEnd('/');
+ _fallbackHost = string.IsNullOrEmpty(fallbackHost)
+ ? _mainHost
+ : fallbackHost.TrimEnd('/');
+ }
+
+ ///
+ /// 主下载地址(YooAsset 会优先使用)
+ /// fileName 示例:DefaultPackage/StaticAssets/DefaultPackage.version
+ ///
+ public string GetRemoteMainURL(string fileName)
+ {
+ return $"{_mainHost}/{fileName}";
+ }
+
+ ///
+ /// 备用下载地址(主地址失败时自动重试)
+ ///
+ public string GetRemoteFallbackURL(string fileName)
+ {
+ return $"{_fallbackHost}/{fileName}";
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs.meta b/Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs.meta
new file mode 100644
index 0000000..77764c1
--- /dev/null
+++ b/Assets/00.StaryEvoTools/Runtime/Tools/RemoteServices.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1bfb1ccd41e3422e9b42f65c275eb0ea
+timeCreated: 1776440659
\ 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 bc18121..0c333c0 100644
--- a/Assets/00.StaryEvoTools/Runtime/Tools/YooAssetFileSystem.cs
+++ b/Assets/00.StaryEvoTools/Runtime/Tools/YooAssetFileSystem.cs
@@ -26,6 +26,17 @@ namespace Stary.Evo
initParameters.BuildinFileSystemParameters = buildinFileSystemParams;
return initParameters;
}
+ public static InitializeParameters WebInitializeParameter(string packageName, string defaultHostServer, string fallbackHostServer)
+ {
+ IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
+ var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
+ var webRemoteFileSystemParams = FileSystemParameters.CreateDefaultWebRemoteFileSystemParameters(remoteServices); //支持跨域下载
+
+ var initParameters = new WebPlayModeParameters();
+ initParameters.WebServerFileSystemParameters = webServerFileSystemParams;
+ initParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
+ return initParameters;
+ }
public static InitializeParameters EditorSimulateInitializeParameter(string packageName)
{
var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName);