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