From 02af92b86df8118e14935803e8648a28edf32263 Mon Sep 17 00:00:00 2001 From: zhangzheng Date: Thu, 8 Jan 2026 12:25:29 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90m=E3=80=91=E4=BF=AE=E6=94=B9=E6=A0=B8?= =?UTF-8?q?=E5=BF=83=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/BuildAsset/BuildAssetWindow.cs | 177 ++++++++------- .../MixedBuildPipelineViewer.cs | 88 +++++--- .../Editor/MarkAdressable/MarkAdressable.cs | 18 -- .../Runtime/HybridLoad/Base/AppConfig.cs | 18 +- .../HybridLoad/Fsm/HotFixStartState.cs | 66 +++--- .../HybridLoad/Fsm/ResEditorSimulateState.cs | 2 +- .../Runtime/HybridLoad/Fsm/ResStartState.cs | 204 +++++++++--------- Assets/00.StaryEvoTools/package.json | 2 +- 8 files changed, 305 insertions(+), 270 deletions(-) diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs index 757654a..0f2e808 100644 --- a/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs +++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetWindow.cs @@ -61,7 +61,7 @@ namespace Stary.Evo.Editor protected override async void Initialize() { base.Initialize(); - + GetBuildPackageNames(); } @@ -70,7 +70,7 @@ namespace Stary.Evo.Editor if (window != null) window.Close(); } - + protected void OnSelectionChange() { EditorUtility.SetDirty(BuildAssetDataSetting); @@ -122,9 +122,7 @@ namespace Stary.Evo.Editor #region BuildAsset - [BoxGroup("Build", showLabel: false)] - [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] - [HideLabel] + [BoxGroup("Build", showLabel: false)] [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] [HideLabel] public BuildAssetDataSetting BuildAssetDataSetting; /// @@ -202,9 +200,7 @@ namespace Stary.Evo.Editor #region Update - [BoxGroup("Build", showLabel: false)] - [Title("打包本地资源", titleAlignment: TitleAlignments.Centered)] - [HideLabel] + [BoxGroup("Build", showLabel: false)] [Title("打包本地资源", titleAlignment: TitleAlignments.Centered)] [HideLabel] public BuildAssetEntity onBuildPipelineEntity; [BoxGroup("Build", showLabel: false)] @@ -248,93 +244,99 @@ namespace Stary.Evo.Editor } - public static string BuildZip(BuildAssetDataSetting setting) -{ - EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(打包zip)", 0.0f); - // 新增:打包为zip的逻辑 - string zipFileName = - $"{setting.packageName}_{setting.packageVersion}.zip"; - //原yooAsset目录 - var outputPackageDirectory = - $"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{setting.packageName}"; - - //RawFile目录路径 - var outputRawFileDirectory = - $"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{setting.packageName}_RawFile"; - - //拷贝目录 - string outFilePath = $"{outputPackageDirectory}/{setting.packageVersion}"; - string outRawFilePath = $"{outputRawFileDirectory}/{setting.packageVersion}"; - - var copyPackageDirectory = - $"{Application.streamingAssetsPath}/{YooAssetSettingsData.GetDefaultYooFolderName()}/{setting.packageName}"; - - //拷贝BuildinCatalog文件 - CreateBuildinCatalogFile("BuildinCatalog.json", copyPackageDirectory, outFilePath); - CreateBuildinCatalogFile("BuildinCatalog.bytes", copyPackageDirectory, outFilePath); - - var copyRawFilePackageDirectory = - $"{Application.streamingAssetsPath}/{YooAssetSettingsData.GetDefaultYooFolderName()}/{setting.packageName}_RawFile"; - CreateBuildinCatalogFile("BuildinCatalog.json", copyRawFilePackageDirectory, outRawFilePath); - CreateBuildinCatalogFile("BuildinCatalog.bytes", copyRawFilePackageDirectory, outRawFilePath); - //输出目录 - string zipFilePath = Path.Combine(outputPackageDirectory, zipFileName); - try - { - using (FileStream zipStream = new FileStream(zipFilePath, FileMode.Create)) - using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create)) + public static string BuildZip(BuildAssetDataSetting setting) { - // 打包主包文件 - foreach (string filePath in Directory.GetFiles(outFilePath, "*.*", SearchOption.AllDirectories)) - { - // 获取文件在压缩包中的相对路径 - string entryName =$"{setting.packageName}/{ Path.GetRelativePath(outFilePath, filePath)}"; - // 创建zip条目 - ZipArchiveEntry entry = archive.CreateEntry(entryName, - System.IO.Compression.CompressionLevel.Optimal); + EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(打包zip)", 0.0f); + // 新增:打包为zip的逻辑 + string zipFileName = + $"{setting.packageName}_{setting.packageVersion}.zip"; + //原yooAsset目录 + var outputPackageDirectory = + $"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{setting.packageName}"; + //拷贝目录 + string outFilePath = $"{outputPackageDirectory}/{setting.packageVersion}"; + var copyPackageDirectory = + $"{Application.streamingAssetsPath}/{YooAssetSettingsData.GetDefaultYooFolderName()}/{setting.packageName}"; - // 写入文件内容 - using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) - using (Stream entryStream = entry.Open()) - { - fileStream.CopyTo(entryStream); - } + //拷贝BuildinCatalog文件 + CreateBuildinCatalogFile("BuildinCatalog.json", copyPackageDirectory, outFilePath); + CreateBuildinCatalogFile("BuildinCatalog.bytes", copyPackageDirectory, outFilePath); + + + //RawFile目录路径 + string outputRawFileDirectory = "", outRawFilePath = "", copyRawFilePackageDirectory = ""; + outputRawFileDirectory = + $"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{setting.packageName}_RawFile"; + if (Directory.Exists(outputRawFileDirectory)) + { + outRawFilePath = $"{outputRawFileDirectory}/{setting.packageVersion}"; + copyRawFilePackageDirectory = + $"{Application.streamingAssetsPath}/{YooAssetSettingsData.GetDefaultYooFolderName()}/{setting.packageName}_RawFile"; + CreateBuildinCatalogFile("BuildinCatalog.json", copyRawFilePackageDirectory, outRawFilePath); + CreateBuildinCatalogFile("BuildinCatalog.bytes", copyRawFilePackageDirectory, outRawFilePath); } - - // 打包RawFile文件 - if (Directory.Exists(outRawFilePath)) + + + //输出目录 + string zipFilePath = Path.Combine(outputPackageDirectory, zipFileName); + try { - foreach (string filePath in Directory.GetFiles(outRawFilePath, "*.*", SearchOption.AllDirectories)) + using (FileStream zipStream = new FileStream(zipFilePath, FileMode.Create)) + using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create)) { - // 获取文件在压缩包中的相对路径 - string entryName =$"{setting.packageName}_RawFile/{ Path.GetRelativePath(outRawFilePath, filePath)}"; - - // 创建zip条目 - ZipArchiveEntry entry = archive.CreateEntry(entryName, - System.IO.Compression.CompressionLevel.Optimal); - - // 写入文件内容 - using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) - using (Stream entryStream = entry.Open()) + // 打包主包文件 + foreach (string filePath in Directory.GetFiles(outFilePath, "*.*", SearchOption.AllDirectories)) { - fileStream.CopyTo(entryStream); + // 获取文件在压缩包中的相对路径 + string entryName = $"{setting.packageName}/{Path.GetRelativePath(outFilePath, filePath)}"; + // 创建zip条目 + ZipArchiveEntry entry = archive.CreateEntry(entryName, + System.IO.Compression.CompressionLevel.Optimal); + + // 写入文件内容 + using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) + using (Stream entryStream = entry.Open()) + { + fileStream.CopyTo(entryStream); + } + } + + // 打包RawFile文件 + if (Directory.Exists(outputRawFileDirectory) && Directory.Exists(outRawFilePath)) + { + foreach (string filePath in Directory.GetFiles(outRawFilePath, "*.*", + SearchOption.AllDirectories)) + { + // 获取文件在压缩包中的相对路径 + string entryName = + $"{setting.packageName}_RawFile/{Path.GetRelativePath(outRawFilePath, filePath)}"; + + // 创建zip条目 + ZipArchiveEntry entry = archive.CreateEntry(entryName, + System.IO.Compression.CompressionLevel.Optimal); + + // 写入文件内容 + using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) + using (Stream entryStream = entry.Open()) + { + fileStream.CopyTo(entryStream); + } + } } } + + Debug.Log($"成功打包为zip:{zipFilePath}"); + EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(打包zip)", 0.25f); + return zipFilePath; + } + catch (Exception ex) + { + Debug.LogError($"打包zip失败:{ex.Message}"); + EditorUtility.ClearProgressBar(); + return default; } } - Debug.Log($"成功打包为zip:{zipFilePath}"); - EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(打包zip)", 0.25f); - return zipFilePath; - } - catch (Exception ex) - { - Debug.LogError($"打包zip失败:{ex.Message}"); - EditorUtility.ClearProgressBar(); - return default; - } -} - private static void CreateBuildinCatalogFile(string fileName, string copyPackageDirectory, string outFilePath) { @@ -355,8 +357,6 @@ namespace Stary.Evo.Editor public static async Task UpdateFileDataResDomain(BuildAssetDataSetting setting, string zipFilePath) { - - string ip = CustomEditorPrefs.GetString("ip"); var messageEntity = await WebRequestSystem.PostFile(ip + "/FileLoad/UpLoadFile", new[] { zipFilePath }); EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(上传zip文件)", 0.5f); @@ -401,7 +401,6 @@ namespace Stary.Evo.Editor "确定"); setting.GetBuildPackageVersion(true); } - } EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(更新数据库)", 1f); @@ -428,7 +427,8 @@ namespace Stary.Evo.Editor DomainName = selectedPackageNames, Platform = EditorUserBuildSettings.activeBuildTarget.ToString(), }; - var resResultMessage = await WebRequestSystem.Post(CustomEditorPrefs.GetString("ip") + "/ResDomain/GetResDomainByDomain", + var resResultMessage = await WebRequestSystem.Post( + CustomEditorPrefs.GetString("ip") + "/ResDomain/GetResDomainByDomain", JsonConvert.SerializeObject(resDmainAddRequst)); //如果低于服务器版本,更新版本号 if (resResultMessage.code != 1011) @@ -493,7 +493,6 @@ namespace Stary.Evo.Editor } - private bool IsRelease() { return BuildAssetDataSetting.environmentType == EnvironmentType.Release; diff --git a/Assets/00.StaryEvoTools/Editor/BuildAsset/PipelineViewer/MixedBuildPipelineViewer.cs b/Assets/00.StaryEvoTools/Editor/BuildAsset/PipelineViewer/MixedBuildPipelineViewer.cs index 64b1f0c..4aaee63 100644 --- a/Assets/00.StaryEvoTools/Editor/BuildAsset/PipelineViewer/MixedBuildPipelineViewer.cs +++ b/Assets/00.StaryEvoTools/Editor/BuildAsset/PipelineViewer/MixedBuildPipelineViewer.cs @@ -27,6 +27,7 @@ namespace Stary.Evo.Editor } // 2. 然后使用ScriptableBuildPipeline打包其余文件 + Debug.Log("开始使用RawFileBuildPipeline打包视频文件..."); var rawBuildResult = BuildRawFiles(); if (!rawBuildResult.Success) @@ -34,6 +35,7 @@ namespace Stary.Evo.Editor Debug.LogError("视频文件打包失败!"); return; } + Debug.Log("混合打包完成!"); base.ExecuteBuild(); } @@ -41,35 +43,54 @@ namespace Stary.Evo.Editor private BuildResult BuildRawFiles() { var rawPackageName = $"{packageName}_RawFile"; - var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(packageName, selectedBuildPipelines); - var buildinFileCopyOption = - AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(packageName, selectedBuildPipelines); - var buildinFileCopyParams = - AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines); - var clearBuildCache = - AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines); - var useAssetDependencyDB = - AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines); + var package = AssetBundleCollectorSettingData.Setting.GetPackage(rawPackageName); + int count = 0; + foreach (var group in package.Groups) + { + foreach (var collector in group.Collectors) + { + count++; + } + } + if (count > 0) + { + var fileNameStyle = + AssetBundleBuilderSetting.GetPackageFileNameStyle(packageName, selectedBuildPipelines); + var buildinFileCopyOption = + AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(packageName, selectedBuildPipelines); + var buildinFileCopyParams = + AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines); + var clearBuildCache = + AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines); + var useAssetDependencyDB = + AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines); - RawFileBuildParameters buildParameters = new RawFileBuildParameters(); - buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); - buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); - buildParameters.BuildPipeline = selectedBuildPipelines; - buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle; - buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; - buildParameters.PackageName = rawPackageName; - buildParameters.PackageVersion = packageVersion; - buildParameters.VerifyBuildingResult = true; - buildParameters.FileNameStyle = fileNameStyle; - buildParameters.BuildinFileCopyOption = buildinFileCopyOption; - buildParameters.BuildinFileCopyParams = buildinFileCopyParams; - buildParameters.ClearBuildCacheFiles = clearBuildCache; - buildParameters.UseAssetDependencyDB = useAssetDependencyDB; - buildParameters.EncryptionServices = CreateEncryptionInstance(); - // SetVideoGroupActive(true); - RawFileBuildPipeline pipeline = new RawFileBuildPipeline(); - return pipeline.Run(buildParameters, true); - + RawFileBuildParameters buildParameters = new RawFileBuildParameters(); + buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); + buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); + buildParameters.BuildPipeline = selectedBuildPipelines; + buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle; + buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; + buildParameters.PackageName = rawPackageName; + buildParameters.PackageVersion = packageVersion; + buildParameters.VerifyBuildingResult = true; + buildParameters.FileNameStyle = fileNameStyle; + buildParameters.BuildinFileCopyOption = buildinFileCopyOption; + buildParameters.BuildinFileCopyParams = buildinFileCopyParams; + buildParameters.ClearBuildCacheFiles = clearBuildCache; + buildParameters.UseAssetDependencyDB = useAssetDependencyDB; + buildParameters.EncryptionServices = CreateEncryptionInstance(); + // SetVideoGroupActive(true); + RawFileBuildPipeline pipeline = new RawFileBuildPipeline(); + return pipeline.Run(buildParameters, true); + } + else + { + return new BuildResult() + { + Success = false + }; + } } @@ -84,8 +105,9 @@ namespace Stary.Evo.Editor AssetBundleBuilderSetting.GetPackageCompressOption(packageName, selectedBuildPipelines); var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines); - - var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines); + + var clearBuildCache = + AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines); var builtinShaderBundleName = GetBuiltinShaderBundleName(); ScriptableBuildParameters buildParameters = new ScriptableBuildParameters(); @@ -106,11 +128,11 @@ namespace Stary.Evo.Editor buildParameters.UseAssetDependencyDB = useAssetDependencyDB; buildParameters.BuiltinShadersBundleName = builtinShaderBundleName; buildParameters.EncryptionServices = CreateEncryptionInstance(); - - + + ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline(); var result = pipeline.Run(buildParameters, true); - + return result; } diff --git a/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs b/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs index a884eeb..d5010f1 100644 --- a/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs +++ b/Assets/00.StaryEvoTools/Editor/MarkAdressable/MarkAdressable.cs @@ -165,24 +165,6 @@ namespace Stary.Evo.Editor }); } - public static void AddRawFileMark() - { - AssetBundleCollectorPackage assetBundleCollectorPackage = null; - var packageRawFile = $"{BuildAssetWindow.GetBuildPackageName()}_RawFile"; - foreach (var package in AssetBundleCollectorSettingData.Setting.Packages) - { - if (packageRawFile == BuildAssetWindow.GetBuildPackageName()) - { - assetBundleCollectorPackage = package; - } - } - - if (assetBundleCollectorPackage != null) - { - YooAsset.Editor.AssetBundleCollectorSettingData.RemovePackage(assetBundleCollectorPackage); - } - } - private static void CreateRes(string domain, string resPath, string outputPath) { ResFileGet.CreateClass(addressDic, "Res", domain, outputPath, diff --git a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Base/AppConfig.cs b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Base/AppConfig.cs index f762e59..10b51c2 100644 --- a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Base/AppConfig.cs +++ b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Base/AppConfig.cs @@ -6,18 +6,19 @@ namespace Stary.Evo public class AppConfig { public static OpenDomainType OpenDomainType { get; set; } + /// /// package name /// public static string PackageDomainName { get; set; } - + public static string IpConfig { get; set; } public static string UserName { get; set; } public static string PassWord { get; set; } public static string ProductName { get; set; } public static string Platform { get; set; } - + public static string MainDomainVersion { get; set; } /// @@ -26,6 +27,15 @@ namespace Stary.Evo private static GameObject _MainBaseModel; + public static bool DeveloperMode + { + get { return HybridClREntrance.Global.stage == StageType.Developer || PackageDomainName == "Main"; } + } + + public static bool MainPackageMode + { + get { return PackageDomainName == "Main"; } + } /// /// 赋值默认的实例 @@ -48,6 +58,8 @@ namespace Stary.Evo { public const string RikidHandLeft = "LeftHandRender/RKHandVisual/Hand_L/left_wrist/left_palm"; public const string RikidHandRight = "RightHandRender/RKHandVisual/Hand_R/right_wrist/right_palm"; - public const string RikidHandRightIndexTip = "RightHandRender/RKHandVisual/Hand_R/right_wrist/right_index_metacarpal/right_index_proximal/right_index_intermediate/right_index_distal/right_index_tip"; + + public const string RikidHandRightIndexTip = + "RightHandRender/RKHandVisual/Hand_R/right_wrist/right_index_metacarpal/right_index_proximal/right_index_intermediate/right_index_distal/right_index_tip"; } } \ No newline at end of file diff --git a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs index a312c99..ce5da1f 100644 --- a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs +++ b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/HotFixStartState.cs @@ -129,21 +129,28 @@ namespace Stary.Evo { var initParams = YooAssetFileSystem.HostInitializeParameter(package.PackageName); // initParameters.CacheFileSystemParameters = cacheFileSystemParams; - - var initOperation = package.InitializeAsync(initParams); - - await initOperation; - - if (initOperation.Status == EOperationStatus.Succeed) + try { - Debug.Log("UnityEvo:从远程加载资源包,初始化成功!"); - return true; + var initOperation = package.InitializeAsync(initParams); + + await initOperation; + + if (initOperation.Status == EOperationStatus.Succeed) + { + Debug.Log("UnityEvo:从远程加载资源包,初始化成功!"); + return true; + } + else + { + Debug.LogWarning($"UnityEvo:从远程加载资源包,初始化失败:{initOperation.Error}"); + } } - else + catch (Exception e) { - Debug.LogError($"UnityEvo:从远程加载资源包,初始化失败:{initOperation.Error}"); - return false; + Debug.LogError($"UnityEvo:从远程加载资源包,初始化失败:{e}"); } + + return false; } private async UniTask OFFLINE_PLAYMODE(ResourcePackage package) @@ -156,19 +163,26 @@ namespace Stary.Evo { //Debug.Log("UnityEvo:网络连接不通畅,切换缓存加载!"); var initParams = YooAssetFileSystem.HostInitializeParameter(package.PackageName); - var initOperation = package.InitializeAsync(initParams); - await initOperation; - if (initOperation.Status == EOperationStatus.Succeed) + try { - Debug.Log("UnityEvo:从本地缓存中资源包,初始化成功!"); - return true; + var initOperation = package.InitializeAsync(initParams); + await initOperation; + if (initOperation.Status == EOperationStatus.Succeed) + { + Debug.Log("UnityEvo:从本地缓存中资源包,初始化成功!"); + } + else + { + Debug.LogWarning($"UnityEvo:从本地缓存中资源包,初始化失败:{initOperation.Error}"); + return false; + } } - else + catch (Exception e) { - Debug.LogError($"UnityEvo:从本地缓存中资源包,初始化失败:{initOperation.Error}"); - return false; + Debug.LogError($"UnityEvo:从本地缓存中资源包,初始化失败:{e}"); } + return false; var operation = package.RequestPackageVersionAsync(); await operation; @@ -321,7 +335,7 @@ namespace Stary.Evo { //初始化读取资源配置表 var package = YooAssets.GetPackage(AppConfig.PackageDomainName); - if (AppConfig.PackageDomainName.Equals("Main") ||HybridClREntrance.Global.stage == StageType.Developer) + if (AppConfig.PackageDomainName.Equals("Main") || HybridClREntrance.Global.stage == StageType.Developer) { //加载热更配置文件 var loadHotfixSettingsOp = package.LoadAssetAsync("Config_DomainConfig"); @@ -380,12 +394,12 @@ namespace Stary.Evo //string loadPath = Path.Combine(Application.temporaryCachePath, "DownloadedContent", AppConfig.PackageDomainName); string loadPath = Path.Combine(Application.temporaryCachePath, "DownloadedContent"); //string loadPath = $"{Application.persistentDataPath}/DownloadedContent/{AppConfig.PackageDomainName}"; - if (Directory.Exists(loadPath)) - { - Directory.Delete(loadPath, true); - // 等一帧,让系统真正释放句柄 - await UniTask.DelayFrame(1); - } + // if (Directory.Exists(loadPath)) + // { + // Directory.Delete(loadPath, true); + // // 等一帧,让系统真正释放句柄 + // await UniTask.DelayFrame(1); + // } FsmLoadSystem loadSystem = FsmSystem as FsmLoadSystem; if (loadSystem != null && loadSystem.ProgressBarPanel == null) diff --git a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResEditorSimulateState.cs b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResEditorSimulateState.cs index b991b1a..4da70a4 100644 --- a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResEditorSimulateState.cs +++ b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResEditorSimulateState.cs @@ -60,7 +60,7 @@ namespace Stary.Evo //4.下载补丁包 await Download(); - if (HybridClREntrance.Global.stage == StageType.Developer) + if (AppConfig.DeveloperMode) { //加载热更配置文件 var loadHotfixSettingsOp = package.LoadAssetAsync("Config_DomainConfig"); diff --git a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResStartState.cs b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResStartState.cs index afdd35b..cee9dcb 100644 --- a/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResStartState.cs +++ b/Assets/00.StaryEvoTools/Runtime/HybridLoad/Fsm/ResStartState.cs @@ -17,7 +17,7 @@ namespace Stary.Evo private DomainConfig.LoadResType loadResType; public GameObject mainPrefab; private DomainConfig domainConfig; - + private string _packageName; private string _sceneName; public ResStartState(IFsmSystemAsync system) : base(system) @@ -37,93 +37,100 @@ namespace Stary.Evo public override async UniTask OnEnterAsync(T1 param1, T2 param2) { - if (domainConfig == null && HybridClREntrance.Global.stage == StageType.Originality) - return; - domainConfig = param1 as DomainConfig; - loadResType = domainConfig.loadResType; - Type type = param2 as Type; - var package = YooAssets.GetPackage(domainConfig.domain); - switch (loadResType) + if (AppConfig.DeveloperMode) { - case DomainConfig.LoadResType.Prefab: - - await LoadDomainPrefab(package); - - break; - case DomainConfig.LoadResType.Scene: - - var sceneMode = domainConfig.loadSceneMode; - var physicsMode = LocalPhysicsMode.None; - SceneHandle handle = package.LoadSceneAsync(domainConfig.sceneIdentifier, sceneMode, physicsMode); - await handle; - - Scene targetScene = SceneManager.GetSceneByName(handle.SceneName); - // targetScene.name = domainConfig.mainScene; - // 设置为 active scene 或者后续 Move 到该 scene - SceneManager.SetActiveScene(targetScene); - _sceneName = targetScene.name; - mainPrefab = GameObject.Find(domainConfig.mainPrefab); - if (mainPrefab == null) - { - await LoadDomainPrefab(package); - } - - break; - } - - if (domainConfig.domain != "Main") - { - LocalTransformInfo info = mainPrefab.GetOrAddComponent(); - FsmLoadSystem fsmLoadSystem = FsmSystem as FsmLoadSystem; - - if (info._list.Count >= 2) + domainConfig = param1 as DomainConfig; + loadResType = domainConfig.loadResType; + _packageName = domainConfig.domain; + Type type = param2 as Type; + var package = YooAssets.GetPackage(domainConfig.domain); + switch (loadResType) { - if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.PointCloud) + case DomainConfig.LoadResType.Prefab: + + await LoadDomainPrefab(package); + + break; + case DomainConfig.LoadResType.Scene: + + var sceneMode = domainConfig.loadSceneMode; + var physicsMode = LocalPhysicsMode.None; + SceneHandle handle = + package.LoadSceneAsync(domainConfig.sceneIdentifier, sceneMode, physicsMode); + await handle; + + Scene targetScene = SceneManager.GetSceneByName(handle.SceneName); + // targetScene.name = domainConfig.mainScene; + // 设置为 active scene 或者后续 Move 到该 scene + SceneManager.SetActiveScene(targetScene); + _sceneName = targetScene.name; + mainPrefab = GameObject.Find(domainConfig.mainPrefab); + if (mainPrefab == null) + { + await LoadDomainPrefab(package); + } + + break; + } + + if (domainConfig.domain != "Main") + { + LocalTransformInfo info = mainPrefab.GetOrAddComponent(); + FsmLoadSystem fsmLoadSystem = FsmSystem as FsmLoadSystem; + + if (info._list.Count >= 2) { - info.Switch(1); - } - else if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.VIOICE) - { - info.Switch(0); - } - else if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.ImageTracked) - { - info.transform.position = fsmLoadSystem.GetTransformCtor().position; - info.transform.rotation = Quaternion.Euler(fsmLoadSystem.GetTransformCtor().rotation); - info.transform.localScale = fsmLoadSystem.GetTransformCtor().scale; + if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.PointCloud) + { + info.Switch(1); + } + else if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.VIOICE) + { + info.Switch(0); + } + else if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.ImageTracked) + { + info.transform.position = fsmLoadSystem.GetTransformCtor().position; + info.transform.rotation = Quaternion.Euler(fsmLoadSystem.GetTransformCtor().rotation); + info.transform.localScale = fsmLoadSystem.GetTransformCtor().scale; + } + else + { + info.Switch(0); + } } else { - info.Switch(0); + Debug.LogError($"UnityEvo:{mainPrefab.name}的TransformInfo长度小于2,无法继续运行,请排查"); } } - else + + if (mainPrefab != null) { - Debug.LogError($"UnityEvo:{mainPrefab.name}的TransformInfo长度小于2,无法继续运行,请排查"); + DomainBase hotfixInstance = mainPrefab.GetComponent(type) as DomainBase; + if (hotfixInstance == null) + { + hotfixInstance = mainPrefab.AddComponent(type) as DomainBase; + } + + if (hotfixInstance == null) + { + Debug.LogError($"热更类{type.Name}实例创建失败!必须继承MonoBehaviour"); + return; + } + + hotfixInstance.DomainName = domainConfig.domain; + hotfixInstance.DomainNameRaw = $"{domainConfig.domain}_RawFile"; + + + // 原有调用逻辑修改为使用实例 + hotfixInstance.OnEnter(""); + hotfixInstance.OnEnterAsync(""); } } - - if (mainPrefab != null) + else { - DomainBase hotfixInstance = mainPrefab.GetComponent(type) as DomainBase; - if (hotfixInstance == null) - { - hotfixInstance = mainPrefab.AddComponent(type) as DomainBase; - } - - if (hotfixInstance == null) - { - Debug.LogError($"热更类{type.Name}实例创建失败!必须继承MonoBehaviour"); - return; - } - - hotfixInstance.DomainName = domainConfig.domain; - hotfixInstance.DomainNameRaw = $"{domainConfig.domain}_RawFile"; - - - // 原有调用逻辑修改为使用实例 - hotfixInstance.OnEnter(""); - hotfixInstance.OnEnterAsync(""); + _packageName = AppConfig.PackageDomainName; } } @@ -156,40 +163,39 @@ namespace Stary.Evo public override async UniTask OnExitAsync() { - Debug.Log("UnityEvo:Domain退出..."); + if (_packageName=="Main") + return; + if (HybridClREntrance.Global.stage == StageType.Developer) { - if (domainConfig.domain != "Main") + DomainBase domainBase = mainPrefab.GetOrAddComponent(); + if (domainBase == null) { - DomainBase domainBase = mainPrefab.GetOrAddComponent(); - if (domainBase == null) - { - Debug.LogError($"UnityEvo:{mainPrefab.name}的DomainBase为空,无法退出,请排查"); - } - else - { - domainBase.OnExit(); - await domainBase.OnExitAsync(); - } + Debug.LogError($"UnityEvo:{mainPrefab.name}的DomainBase为空,无法退出,请排查"); + } + else + { + domainBase.OnExit(); + await domainBase.OnExitAsync(); - if (domainBase != null) - { - GameObject.Destroy(domainBase.gameObject); + GameObject.Destroy(domainBase.gameObject); - await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(domainBase.DomainName); - await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(domainBase.DomainNameRaw); - } + await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(domainBase.DomainName); + await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(domainBase.DomainNameRaw); + } - if (loadResType == DomainConfig.LoadResType.Scene) - { - await SceneManager.UnloadSceneAsync(_sceneName); - } + Debug.Log("UnityEvo:Domain退出..."); + + if (loadResType == DomainConfig.LoadResType.Scene) + { + await SceneManager.UnloadSceneAsync(_sceneName); } } else if (HybridClREntrance.Global.stage == StageType.Originality) { - await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(AppConfig.PackageDomainName); + await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(_packageName); AppConfig.PackageDomainName = ""; + Debug.Log("UnityEvo:Domain退出..."); } } } diff --git a/Assets/00.StaryEvoTools/package.json b/Assets/00.StaryEvoTools/package.json index c343c88..ab9f83e 100644 --- a/Assets/00.StaryEvoTools/package.json +++ b/Assets/00.StaryEvoTools/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.tools", - "version": "1.3.5", + "version": "1.3.6", "displayName": "00.StaryEvo.Tools", "description": "This is an Framework package(后台服务器版本,端口9527)", "unity": "2021.3",