85 lines
2.0 KiB
C#
85 lines
2.0 KiB
C#
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
|
||
namespace Ether
|
||
{
|
||
public class EntityManager : SingletonAutoMono<EntityManager>
|
||
{
|
||
Dictionary<string, Entity> allEntityDic = new Dictionary<string, Entity>();
|
||
|
||
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<string> removeIds = new List<string>();
|
||
|
||
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();
|
||
}
|
||
}
|
||
}
|