using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Ether { public class EntityManager : SingletonAutoMono { Dictionary allEntityDic = new Dictionary(); public void AddEntity(Entity entity) { if (string.IsNullOrEmpty(entity.key)) { return; } if (allEntityDic.TryGetValue(entity.key, out Entity saveKeyEntity)) { Debug.LogError($"有重复EntityKey:{entity.key}, 有重复EntityName:{entity.name},字典中的EntityName:{saveKeyEntity.name}"); return; } allEntityDic.Add(entity.key, entity); } public void RemoveEntity(Entity entity) { if (allEntityDic.ContainsKey(entity.key)) { allEntityDic.Remove(entity.key); } } public void RemoveEntity(string key) { if (allEntityDic.TryGetValue(key, out Entity entity)) { RemoveEntity(entity); } } public Entity GetEntity(string key) { if (allEntityDic.TryGetValue(key, out Entity saveEntity)) { return saveEntity; } return null; } public override void Clear() { allEntityDic.Clear(); } public void CheckEmptyEntity() { List removeIds = new List(); foreach (var entityPair in allEntityDic) { if (entityPair.Value == null) { removeIds.Add(entityPair.Key); } } for (int i = 0; i < removeIds.Count; i++) { RemoveEntity(removeIds[i]); } } private void OnDestroy() { Clear(); } } }