mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-20 05:37:11 +08:00
(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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user