From 8123683e6ef5b36905605f74148c83d5f14b6771 Mon Sep 17 00:00:00 2001 From: GwWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Thu, 18 Dec 2025 19:48:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(asset):=20=E6=B7=BB=E5=8A=A0=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E5=92=8C=E8=B5=84=E6=BA=90=E6=B3=A8=E5=86=8C=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 RegisterScene 方法支持通过映射对象注册场景 - 新增 RegisterResource 方法支持通过映射对象注册资源 - 添加对重复键的检查并抛出相应异常 - 实现对无效标识符类型的验证逻辑 --- .../system/AbstractAssetCatalogSystem.cs | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/GFramework.Core.Godot/system/AbstractAssetCatalogSystem.cs b/GFramework.Core.Godot/system/AbstractAssetCatalogSystem.cs index bc91f9a..1defc80 100644 --- a/GFramework.Core.Godot/system/AbstractAssetCatalogSystem.cs +++ b/GFramework.Core.Godot/system/AbstractAssetCatalogSystem.cs @@ -1,4 +1,4 @@ -using GFramework.Core.system; +using GFramework.Core.system; namespace GFramework.Core.Godot.system; @@ -39,6 +39,20 @@ public abstract class AbstractAssetCatalogSystem : AbstractSystem, IAssetCatalog _scenes[key] = new AssetCatalog.SceneId(path); } + /// + /// 注册场景资源 + /// + /// 包含键和场景标识符的映射对象 + /// 当场景键已存在时抛出异常 + public void RegisterScene(AssetCatalog.AssetCatalogMapping mapping) + { + if (mapping.Id is not AssetCatalog.SceneId sceneId) + throw new InvalidOperationException("Mapping ID is not a SceneId"); + + if (!_scenes.TryAdd(mapping.Key, sceneId)) + throw new InvalidOperationException($"Scene key duplicated: {mapping.Key}"); + } + /// /// 注册普通资源 /// @@ -53,6 +67,20 @@ public abstract class AbstractAssetCatalogSystem : AbstractSystem, IAssetCatalog _resources[key] = new AssetCatalog.ResourceId(path); } + /// + /// 注册普通资源 + /// + /// 包含键和资源标识符的映射对象 + /// 当资源键已存在时抛出异常 + public void RegisterResource(AssetCatalog.AssetCatalogMapping mapping) + { + if (mapping.Id is not AssetCatalog.ResourceId resourceId) + throw new InvalidOperationException("Mapping ID is not a ResourceId"); + + if (!_resources.TryAdd(mapping.Key, resourceId)) + throw new InvalidOperationException($"Resource key duplicated: {mapping.Key}"); + } + #endregion #region Query(对外)