(client) feat:添加临时动画组件,添加逃跑逻辑
This commit is contained in:
@ -12,46 +12,7 @@ namespace Item
|
||||
/// </summary>
|
||||
public class ItemResource
|
||||
{
|
||||
/// <summary>
|
||||
/// 构造函数:通过 ItemDef 对象初始化 ItemResource。
|
||||
/// </summary>
|
||||
/// <param name="def">物品的定义对象。</param>
|
||||
/// <exception cref="ArgumentNullException">如果传入的 ItemDef 为 null,则抛出此异常。</exception>
|
||||
public ItemResource(ItemDef def)
|
||||
{
|
||||
// 参数校验:在构造函数中进行参数非空检查至关重要,避免空引用异常。
|
||||
if (def == null) throw new ArgumentNullException(nameof(def), "创建 ItemResource 时,ItemDef 不能为 null。");
|
||||
|
||||
// 从 ItemDef 对象中直接赋值 ItemResource 的所有属性。
|
||||
// 这将创建 ItemResource 的逻辑完全封装在类内部,外部调用方无需关心具体属性的提取过程。
|
||||
DefName = def.defName;
|
||||
Name = def.label;
|
||||
Description = def.description;
|
||||
Rarity = def.rarity;
|
||||
MaxStack = def.maxStack;
|
||||
IsEquippable = def.ssEquippable;
|
||||
FPS = def.FPS;
|
||||
|
||||
var sprites = new List<Sprite>();
|
||||
var packID = def.packID;
|
||||
|
||||
// 逻辑修改:添加对 def.textures 的非空检查,避免 NullReferenceException
|
||||
if (def.textures != null)
|
||||
{
|
||||
foreach (var texture in def.textures)
|
||||
{
|
||||
var spr = PackagesImageManager.Instance.GetSprite(packID, texture);
|
||||
if (spr)
|
||||
sprites.Add(spr);
|
||||
else
|
||||
// 统一日志信息,说明哪个纹理加载失败
|
||||
Debug.LogWarning(
|
||||
$"ItemResource: Failed to load sprite for texture '{texture}' for item '{def.defName}'.");
|
||||
}
|
||||
}
|
||||
// 逻辑修改:Icon 属性现在是 IReadOnlyList<Sprite> 类型,确保外部只读访问
|
||||
Icon = sprites.AsReadOnly(); // 使用 AsReadOnly() 获得一个只读包装器
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 物品的定义名称,通常作为其唯一标识符。
|
||||
@ -107,5 +68,26 @@ namespace Item
|
||||
};
|
||||
return new ItemResource(defaultDef);
|
||||
}
|
||||
/// <summary>
|
||||
/// 构造函数:通过 ItemDef 对象初始化 ItemResource。
|
||||
/// </summary>
|
||||
/// <param name="def">物品的定义对象。</param>
|
||||
/// <exception cref="ArgumentNullException">如果传入的 ItemDef 为 null,则抛出此异常。</exception>
|
||||
public ItemResource(ItemDef def)
|
||||
{
|
||||
// 参数校验:在构造函数中进行参数非空检查至关重要,避免空引用异常。
|
||||
if (def == null) throw new ArgumentNullException(nameof(def), "创建 ItemResource 时,ItemDef 不能为 null。");
|
||||
|
||||
// 从 ItemDef 对象中直接赋值 ItemResource 的所有属性。
|
||||
// 这将创建 ItemResource 的逻辑完全封装在类内部,外部调用方无需关心具体属性的提取过程。
|
||||
DefName = def.defName;
|
||||
Name = def.label;
|
||||
Description = def.description;
|
||||
Rarity = def.rarity;
|
||||
MaxStack = def.maxStack;
|
||||
IsEquippable = def.ssEquippable;
|
||||
FPS = MathF.Max(0.0001f,def.FPS);
|
||||
Icon = PackagesImageManager.Instance.GetSprites(def.textures);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user