diff --git a/Client/Assets/Scripts/Managers/EntityManage.cs b/Client/Assets/Scripts/Managers/EntityManage.cs index 4b593a3..8bf5eac 100644 --- a/Client/Assets/Scripts/Managers/EntityManage.cs +++ b/Client/Assets/Scripts/Managers/EntityManage.cs @@ -20,6 +20,9 @@ namespace Managers public EntityPrefab defaultEntityPrefab; + + private List> pendingAdditions; + public LinkedList FindEntitiesByFaction(string factionKey) { if (factionEntities.TryGetValue(factionKey, out var entities)) @@ -56,6 +59,20 @@ namespace Managers Destroy(entityToRemove.gameObject); } } + + if (pendingAdditions.Any()) + { + foreach (var entity in pendingAdditions) + { + if (!factionEntities.ContainsKey(entity.Item1)) + { + factionEntities[entity.Item1] = new LinkedList(); + } + + factionEntities[entity.Item1].AddLast(entity.Item2); + } + pendingAdditions.Clear(); + } } /// @@ -96,12 +113,14 @@ namespace Managers // 管理派系列表 var factionKey = def.attributes.label ?? "default"; - if (!factionEntities.ContainsKey(factionKey)) - { - factionEntities[factionKey] = new LinkedList(); - } + pendingAdditions.Add(Tuple.Create(factionKey, entityComponent)); - factionEntities[factionKey].AddLast(entityComponent); + // if (!factionEntities.ContainsKey(factionKey)) + // { + // factionEntities[factionKey] = new LinkedList(); + // } + + // factionEntities[factionKey].AddLast(entityComponent); return entityComponent; } @@ -219,13 +238,14 @@ namespace Managers var entityComponent = entity.GetComponent(); const string factionKey = "default"; - if (!factionEntities.ContainsKey(factionKey)) - { - factionEntities[factionKey] = new LinkedList(); - } + pendingAdditions.Add(Tuple.Create(factionKey, entityComponent)); + // if (!factionEntities.ContainsKey(factionKey)) + // { + // factionEntities[factionKey] = new LinkedList(); + // } - entityComponent.DefaultInit(); - factionEntities[factionKey].AddLast(entityComponent); + // entityComponent.DefaultInit(); + // factionEntities[factionKey].AddLast(entityComponent); } protected override void OnStart()