using Fantasy.Entitas; using Fantasy.Entitas.Interface; namespace NB.Map; public class MapManageComponentDestroySystem : DestroySystem { protected override void Destroy(MapManageComponent self) { foreach (var (_, map) in self.Maps) { map.Dispose(); } self.Maps.Clear(); } } public class MapManageComponentAwakeSystem : AwakeSystem { protected override void Awake(MapManageComponent self) { //初始化所有地图 for (int i = 1; i < 100; i++) { //初始化100个地图 var map = MapFactory.Create(self.Scene, i); if (map != null) { self.Add(map); } } } } public static class MapManageComponentSystem { #region 增删 public static void Add(this MapManageComponent self, Map map) { self.Maps[map.MapId] = map; } public static bool Remove(this MapManageComponent self, int mapId) { if (self.Maps.TryGetValue(mapId, out var map)) { map.Dispose(); } return true; } public static Map? Get(this MapManageComponent self, int mapId) { return self.Maps.GetValueOrDefault(mapId); } #endregion }