(client) feat:实现技能树界面,实现地图生成器,实现维度指定,实现规则瓦片定义,实现逃跑逻辑,实现消息定义,实现武器动画,实现受击动画 fix: 修复单攻击子弹击中多个目标,修复人物属性计算错误 (#56)

Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com>
Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/56
This commit is contained in:
2025-09-19 08:26:54 +08:00
parent 78849e0cc5
commit 87a8abe86c
282 changed files with 19364 additions and 8824 deletions

View File

@@ -303,6 +303,7 @@ namespace Managers
return define;
}
}
return null;
}
@@ -321,6 +322,7 @@ namespace Managers
return (T)define;
}
}
return null;
}
@@ -358,6 +360,7 @@ namespace Managers
{
return pack.packRootPath;
}
return null;
}
@@ -377,6 +380,7 @@ namespace Managers
{
defineList.AddRange(anonymousDefine.Value);
}
return defineList.ToArray();
}
@@ -456,79 +460,8 @@ namespace Managers
return null;
}
}
/// <summary>
/// 查询指定类型下的所有命名 <see cref="Define"/> 对象(不包括匿名定义)。
/// </summary>
/// <param name="defineType">定义类型(外层字典的键,通常是类的名称)。</param>
/// <returns>该类型下的命名 <see cref="Define"/> 数组。如果未找到任何命名定义,则返回 null。</returns>
public Define[] QueryNamedDefinesByType(string defineType)
{
if (string.IsNullOrEmpty(defineType))
{
Debug.LogError("查询失败:定义类型参数不能为空!");
return null;
}
var result = new List<Define>();
// 仅从命名定义中查询。
if (defines.TryGetValue(defineType, out var namedDefinitions))
{
result.AddRange(namedDefinitions.Values);
}
// 如果结果为空,则返回 null。
if (result.Count == 0)
{
Debug.LogWarning($"查询失败:未找到定义类型 '{defineType}' 的命名定义");
return null;
}
return result.ToArray();
}
/// <summary>
/// 查询指定类型下的所有命名 <see cref="Define"/> 对象,并尝试转换为目标类型(不包括匿名定义)。
/// </summary>
/// <typeparam name="T">目标类型,必须继承自 <see cref="Define"/>。</typeparam>
/// <returns>转换后的目标类型数组。如果未找到或转换失败,则返回 null。</returns>
public T[] QueryNamedDefinesByType<T>() where T : Define
{
var defineType = typeof(T).Name;
var allDefines = QueryNamedDefinesByType(defineType)?.ToList();
if (allDefines == null || allDefines.Count == 0)
{
return null;
}
try
{
// 尝试将所有 <see cref="Define"/> 对象转换为目标类型 T。
var result = new List<T>();
foreach (var item in allDefines)
{
if (item is T converted)
{
result.Add(converted);
}
else
{
Debug.LogError($"类型转换失败:无法将 {item.GetType().Name} 转换为 {typeof(T).Name}");
return null;
}
}
return result.ToArray();
}
catch (Exception ex)
{
Debug.LogError($"类型转换失败:从 Define 转换为 {typeof(T).Name} 时出错。错误信息:{ex.Message}");
return null;
}
}
/// <summary>
/// 返回所有加载的定义包的字符串表示。
/// </summary>