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(对外)