12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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<T> : 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);
- }
- }
|