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