(client) feat:添加事件定义,定义部分怪物

This commit is contained in:
m0_75251201
2025-09-03 18:13:29 +08:00
parent ce04c8cec8
commit eb9cf415f2
79 changed files with 4666 additions and 4981 deletions

View File

@ -51,31 +51,44 @@ namespace Managers
/// <summary> 默认实体的预制体,用于生成失败时的回退。 </summary>
public EntityPrefab defaultEntityPrefab;
public EntityPrefab[] GetAllEntities(string dimensionId)
{
if (!_dimensionFactionEntities.ContainsKey(dimensionId))
{
Debug.LogWarning($"实体管理器:尝试在维度 '{dimensionId}' 中查找实体,但其内部存储未初始化。");
return null;
}
// 获取对应维度的内层字典
var factionEntitiesForDimension = _dimensionFactionEntities[dimensionId];
// 使用 LINQ 的 SelectMany 方法来扁平化所有 LinkedList 中的 EntityPrefab
return factionEntitiesForDimension.Values // 获取所有 LinkedList<EntityPrefab> 的集合
.SelectMany(linkedList => linkedList) // 将每个 LinkedList 中的元素展开到一个单一的序列中
.ToArray(); // 将该序列转换为一个数组
}
/// <summary>
/// 在指定维度中,根据派系键查找所有实体。
/// </summary>
/// <param name="dimensionId">维度的唯一标识符。</param>
/// <param name="factionKey">派系键。</param>
/// <returns>指定派系下的实体列表,如果未找到则返回空列表。</returns>
public LinkedList<EntityPrefab> FindEntitiesByFaction(string dimensionId, string factionKey)
public EntityPrefab[] FindEntitiesByFaction(string dimensionId, string factionKey)
{
// 如果在场景加载前或维度未在Program中注册_dimensionFactionEntities可能还没有该维度ID的条目。
if (!_dimensionFactionEntities.ContainsKey(dimensionId))
{
Debug.LogWarning($"实体管理器:尝试在维度 '{dimensionId}' 中查找实体,但其内部存储未初始化。");
return new LinkedList<EntityPrefab>();
return null;
}
if (_dimensionFactionEntities.TryGetValue(dimensionId, out var factionDict))
{
if (factionDict.TryGetValue(factionKey, out var entities))
{
return entities;
return entities.ToArray();
}
}
return new LinkedList<EntityPrefab>(); // 如果未找到,返回一个空列表
return null; // 如果未找到,返回一个空列表
}
/// <summary>