using System; namespace ET { // GetComponentSystem有巨大作用,比如每次保存Unit的数据不需要所有组件都保存,只需要保存Unit变化过的组件 // 是否变化可以通过判断该组件是否GetComponent,Get了就记录该组件 // 这样可以只保存Unit变化过的组件 // 再比如传送也可以做此类优化 public interface IGetComponent { } public interface IGetComponentSystem: ISystemType { void Run(Entity o, Entity component); } [ObjectSystem] public abstract class GetComponentSystem : IGetComponentSystem where T: Entity, IGetComponent { void IGetComponentSystem.Run(Entity o, Entity component) { this.GetComponent((T)o, component); } Type ISystemType.SystemType() { return typeof(IGetComponentSystem); } InstanceQueueIndex ISystemType.GetInstanceQueueIndex() { return InstanceQueueIndex.None; } Type ISystemType.Type() { return typeof(T); } protected abstract void GetComponent(T self, Entity component); } }