From 428b6f50b643fc38ec5d276d56785a440a517791 Mon Sep 17 00:00:00 2001 From: mzh <3213885650@qq.com> Date: Tue, 31 Mar 2026 15:29:50 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90m=E3=80=91=E4=BC=98=E5=8C=96HotfixMain?= =?UTF-8?q?ResDomain=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.添加配置文件全局获取方法HotfixMainResDomain.Get,含不存在时补充创建逻辑 2.优化加载场景的缺失提示和获取途径,处理选中配置文件时循环报错的问题 3.添加包体配置项,允许对子包配置做独立处理 --- .../PlayerSettings/HotfixMainResDomain.cs | 95 +++++++++++++++++-- Assets/00.StaryEvo/package.json | 2 +- 2 files changed, 89 insertions(+), 8 deletions(-) diff --git a/Assets/00.StaryEvo/Runtime/PlayerSettings/HotfixMainResDomain.cs b/Assets/00.StaryEvo/Runtime/PlayerSettings/HotfixMainResDomain.cs index 5f98e68..40afcc8 100644 --- a/Assets/00.StaryEvo/Runtime/PlayerSettings/HotfixMainResDomain.cs +++ b/Assets/00.StaryEvo/Runtime/PlayerSettings/HotfixMainResDomain.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEditor; using UnityEngine; @@ -8,8 +9,41 @@ namespace Stary.Evo [CreateAssetMenu(fileName = "HotfixMainResDomain", menuName = "Evo/Create HotfixMainResDomain")] public class HotfixMainResDomain : ScriptableObject { + [TabGroup("MainResDomain")] + [InlineProperty, HideLabel] public HotfixMainResDomainEntity hotfixMainResDomainEntity; + + [TabGroup("ProjectInfo")] + [InlineProperty, HideLabel] public ProjectInfo projectInfo; + + [TabGroup("BuildConfig")] + [InlineProperty, HideLabel] + public BuildConfig buildConfig; + + private static HotfixMainResDomain globalInstance; + public static HotfixMainResDomain Get + { + get + { + // 在Resources目录下查找配置 + if (globalInstance == null) + { + globalInstance = Resources.Load("HotfixMainResDomain"); + } + // 无该配置时尝试创建 + else if (globalInstance == null) + { + globalInstance = CreateInstance(); + var path = AssetDatabase.GenerateUniqueAssetPath("Resources/HotfixMainResDomain.asset"); + AssetDatabase.CreateAsset(globalInstance, path); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + // 返回热更资源配置 + return globalInstance; + } + } } [Serializable] @@ -37,14 +71,61 @@ namespace Stary.Evo /// /// 项目包名 /// - [ReadOnly] public string projectPackageName; - -#if UNITY_EDITOR - - public SceneAsset loadingScene; -#endif [ReadOnly] - public string loadingScenePath; + public string projectPackageName; + + /// + /// 资源加载场景 + /// + [LabelText("资源加载场景")] + [Required("如果需要场景作为资源加载过程中的过渡,请将其拖到此处")] + public SceneAsset loadingScene; + /// + /// 资源加载场景(路径) + /// + public string loadingScenePath => AssetDatabase.GetAssetPath(loadingScene); } + + [Serializable] + public class BuildConfig + { + [LabelText("包体配置")] + private List packages = new(); + + public PackageConfig Get(string packageID) + { + var result = packages.Find(x=>x.packageID==packageID); + if (result == null) + { + result = new PackageConfig(); + packages.Add(result); + } + return result; + } + + public void Set(string packageID, PackageConfigInfo config) + { + var package = Get(packageID); + package.info = config; + } + } + + [Serializable] + public class PackageConfig + { + [FoldoutGroup("@packageID")] + [LabelText("包体ID")] + public string packageID; + [FoldoutGroup("@packageID")] + [InlineProperty, HideLabel] + public PackageConfigInfo info; + } + + [Serializable] + public class PackageConfigInfo + { + [LabelText("App名称")] + public string appName; + } } \ No newline at end of file diff --git a/Assets/00.StaryEvo/package.json b/Assets/00.StaryEvo/package.json index c285ae4..68cc467 100644 --- a/Assets/00.StaryEvo/package.json +++ b/Assets/00.StaryEvo/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.main", - "version": "2.1.0", + "version": "2.1.1", "displayName": "00.StaryEvo", "description": "This is an Framework package(后台服务器版本,端口9527)", "unity": "2021.3",