using Arch.Core; using GFramework.Core.ecs.components; namespace GFramework.Core.ecs.systems; /// /// 移动系统 - Arch 原生实现 /// 负责更新具有位置和速度组件的实体的位置 /// public sealed class MovementSystem : ArchSystemAdapter { private QueryDescription _query; /// /// 初始化系统 /// public void Initialize(World world) { // 创建查询:查找所有同时拥有Position和Velocity组件的实体 _query = new QueryDescription() .WithAll(); } /// /// 系统更新方法,每帧调用一次 /// /// ECS 世界 /// 帧间隔时间 public void Update(World world, float deltaTime) { // 查询并更新所有符合条件的实体 world.Query(in _query, (ref Position pos, ref Velocity vel) => { pos.X += vel.X * deltaTime; pos.Y += vel.Y * deltaTime; }); } }