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();