diff --git a/Assets/TcgEngine/Scripts/UI/AvatarUI.cs b/Assets/TcgEngine/Scripts/UI/AvatarUI.cs
index 88e0ede..3c112b3 100644
--- a/Assets/TcgEngine/Scripts/UI/AvatarUI.cs
+++ b/Assets/TcgEngine/Scripts/UI/AvatarUI.cs
@@ -18,6 +18,9 @@ namespace TcgEngine.UI
private Image avatar_img;
private Button avatar_button;
private Sprite default_icon;
+
+ [Header("Dynamic Art Path")]
+ [SerializeField] private string avatar_path;
private AvatarData avatar;
@@ -29,6 +32,22 @@ namespace TcgEngine.UI
if (avatar_button != null)
avatar_button.onClick.AddListener(OnClick);
+
+ if (!string.IsNullOrEmpty(avatar_path))
+ {
+ LoadAvatarSprite();
+ }
+ }
+
+ ///
+ /// 在 Inspector 中修改值时自动重新加载
+ ///
+ private void OnValidate()
+ {
+ if (Application.isPlaying && !string.IsNullOrEmpty(avatar_path))
+ {
+ LoadAvatarSprite();
+ }
}
public void SetAvatar(AvatarData avatar)
@@ -42,6 +61,46 @@ namespace TcgEngine.UI
avatar_img.sprite = avatar.GetAvatar();
}
}
+
+ ///
+ /// 设置头像图片,使用本地图片路径
+ ///
+ public void SetAvatarPath(string path)
+ {
+ avatar_path = path;
+ LoadAvatarSprite();
+ }
+
+ ///
+ /// 获取当前头像路径
+ ///
+ public string GetAvatarPath()
+ {
+ return avatar_path;
+ }
+
+ ///
+ /// 加载头像图片
+ ///
+ private void LoadAvatarSprite()
+ {
+ if (!string.IsNullOrEmpty(avatar_path))
+ {
+ Sprite dynamicSprite = SpriteLoader.Get()?.LoadSprite(avatar_path);
+ if (dynamicSprite != null)
+ {
+ avatar_img.sprite = dynamicSprite;
+ }
+ else
+ {
+ Debug.LogWarning($"AvatarUI 头像图片加载失败: {avatar_path}");
+ }
+ }
+ else
+ {
+ Debug.LogWarning($"AvatarUI avatar_path为空");
+ }
+ }
public void SetDefaultAvatar()
{
diff --git a/Assets/TcgEngine/Scripts/UI/PlayerUI.cs b/Assets/TcgEngine/Scripts/UI/PlayerUI.cs
index d372e15..105f7af 100644
--- a/Assets/TcgEngine/Scripts/UI/PlayerUI.cs
+++ b/Assets/TcgEngine/Scripts/UI/PlayerUI.cs
@@ -76,13 +76,12 @@ namespace TcgEngine.UI
hp_txt.text = prev_hp.ToString();
hp_max_txt.text = "/" + player.hp_max.ToString();
- AvatarData adata = AvatarData.Get(player.avatar);
- if (avatar != null && adata != null && !killed)
- avatar.SetAvatar(adata);
-
- delayed_damage_timer -= Time.deltaTime;
- if (!IsDamagedDelayed())
- prev_hp = player.hp;
+ // 默认头像
+ string avatarId = !string.IsNullOrEmpty(player.avatar) ? player.avatar : "horse";
+ string avatarPath = "Avatar/" + avatarId + ".png";
+
+ // 设置头像路径
+ SetAvatarByPath(avatarPath);
}
@@ -93,6 +92,17 @@ namespace TcgEngine.UI
SlowUpdate();
}
}
+
+ ///
+ /// 通过路径设置头像
+ ///
+ private void SetAvatarByPath(string avatarPath)
+ {
+ if (avatar != null && !killed)
+ {
+ avatar.SetAvatarPath(avatarPath);
+ }
+ }
void SlowUpdate()
{