From 89b7bcca8a0c5ba1b11abb115bdf86ac47b161f1 Mon Sep 17 00:00:00 2001 From: GeWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:34:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(ecs):=20=E4=B8=BAECS=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=E5=AE=9E=E9=AA=8C=E6=80=A7?= =?UTF-8?q?=E7=89=B9=E6=80=A7=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在ArchitectureContext中的ECS相关方法添加[Experimental]特性 - 在ECS测试类上添加[Experimental]特性标记 - 为ECS基础测试方法添加实验性特性 - 统一使用System.Diagnostics.CodeAnalysis命名空间 - 标记GetEcsWorld、RegisterEcsSystem等核心方法为实验性API --- GFramework.Core.Tests/ecs/EcsAdvancedTests.cs | 2 ++ GFramework.Core.Tests/ecs/EcsBasicTests.cs | 3 +++ GFramework.Core.Tests/ecs/EcsIntegrationTests.cs | 2 ++ GFramework.Core/architecture/ArchitectureContext.cs | 5 +++++ 4 files changed, 12 insertions(+) diff --git a/GFramework.Core.Tests/ecs/EcsAdvancedTests.cs b/GFramework.Core.Tests/ecs/EcsAdvancedTests.cs index 64ac626..972df44 100644 --- a/GFramework.Core.Tests/ecs/EcsAdvancedTests.cs +++ b/GFramework.Core.Tests/ecs/EcsAdvancedTests.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Reflection; using Arch.Core; using GFramework.Core.Abstractions.ecs; @@ -13,6 +14,7 @@ using NUnit.Framework; namespace GFramework.Core.Tests.ecs; [TestFixture] +[Experimental("GFrameworkECS")] public class EcsAdvancedTests { [SetUp] diff --git a/GFramework.Core.Tests/ecs/EcsBasicTests.cs b/GFramework.Core.Tests/ecs/EcsBasicTests.cs index 021aa68..6fd1dce 100644 --- a/GFramework.Core.Tests/ecs/EcsBasicTests.cs +++ b/GFramework.Core.Tests/ecs/EcsBasicTests.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Reflection; using Arch.Core; using GFramework.Core.Abstractions.ecs; @@ -16,6 +17,7 @@ namespace GFramework.Core.Tests.ecs; /// 包括实体创建、组件设置、系统更新、实体销毁等基本操作。 /// [TestFixture] +[Experimental("GFrameworkECS")] public class EcsBasicTests { /// @@ -80,6 +82,7 @@ public class EcsBasicTests /// 测试ECS初始化功能,验证是否能正确创建EcsWorld实例。 /// [Test] + [Experimental("GFrameworkECS")] public void Test_01_InitializeEcs_Should_Create_EcsWorld() { _context!.InitializeEcs(); diff --git a/GFramework.Core.Tests/ecs/EcsIntegrationTests.cs b/GFramework.Core.Tests/ecs/EcsIntegrationTests.cs index 17cb4dc..6a70b37 100644 --- a/GFramework.Core.Tests/ecs/EcsIntegrationTests.cs +++ b/GFramework.Core.Tests/ecs/EcsIntegrationTests.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Reflection; using Arch.Core; using GFramework.Core.Abstractions.ecs; @@ -16,6 +17,7 @@ namespace GFramework.Core.Tests.ecs; /// 包括实体管理、组件操作、系统调度、优先级控制以及性能基准测试。 /// [TestFixture] +[Experimental("GFrameworkECS")] public class EcsIntegrationTests { /// diff --git a/GFramework.Core/architecture/ArchitectureContext.cs b/GFramework.Core/architecture/ArchitectureContext.cs index 0b89e27..d627072 100644 --- a/GFramework.Core/architecture/ArchitectureContext.cs +++ b/GFramework.Core/architecture/ArchitectureContext.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using GFramework.Core.Abstractions.architecture; using GFramework.Core.Abstractions.command; using GFramework.Core.Abstractions.ecs; @@ -423,6 +424,7 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext /// 获取ECS世界实例 /// /// ECS世界实例 + [Experimental("GFrameworkECS")] public IEcsWorld GetEcsWorld() { return _ecsWorld ?? @@ -433,6 +435,7 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext /// 注册ECS系统 /// /// ECS系统类型 + [Experimental("GFrameworkECS")] public void RegisterEcsSystem() where T : class, IEcsSystem { // 使用RegisterPlurality注册到所有接口 @@ -442,6 +445,7 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext /// /// 初始化ECS(在架构初始化时调用) /// + [Experimental("GFrameworkECS")] public void InitializeEcs() { if (_ecsWorld != null) return; @@ -463,6 +467,7 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext /// /// 销毁ECS资源 /// + [Experimental("GFrameworkECS")] private void DisposeEcs() { _ecsWorld?.Dispose();