头像路径

This commit is contained in:
xianyi
2025-08-29 11:33:52 +08:00
parent b3a5232867
commit 19413911d9
2 changed files with 76 additions and 7 deletions

View File

@@ -19,6 +19,9 @@ namespace TcgEngine.UI
private Button avatar_button; private Button avatar_button;
private Sprite default_icon; private Sprite default_icon;
[Header("Dynamic Art Path")]
[SerializeField] private string avatar_path;
private AvatarData avatar; private AvatarData avatar;
void Awake() void Awake()
@@ -29,6 +32,22 @@ namespace TcgEngine.UI
if (avatar_button != null) if (avatar_button != null)
avatar_button.onClick.AddListener(OnClick); avatar_button.onClick.AddListener(OnClick);
if (!string.IsNullOrEmpty(avatar_path))
{
LoadAvatarSprite();
}
}
/// <summary>
/// 在 Inspector 中修改值时自动重新加载
/// </summary>
private void OnValidate()
{
if (Application.isPlaying && !string.IsNullOrEmpty(avatar_path))
{
LoadAvatarSprite();
}
} }
public void SetAvatar(AvatarData avatar) public void SetAvatar(AvatarData avatar)
@@ -43,6 +62,46 @@ namespace TcgEngine.UI
} }
} }
/// <summary>
/// 设置头像图片,使用本地图片路径
/// </summary>
public void SetAvatarPath(string path)
{
avatar_path = path;
LoadAvatarSprite();
}
/// <summary>
/// 获取当前头像路径
/// </summary>
public string GetAvatarPath()
{
return avatar_path;
}
/// <summary>
/// 加载头像图片
/// </summary>
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() public void SetDefaultAvatar()
{ {
this.avatar = null; this.avatar = null;

View File

@@ -76,13 +76,12 @@ namespace TcgEngine.UI
hp_txt.text = prev_hp.ToString(); hp_txt.text = prev_hp.ToString();
hp_max_txt.text = "/" + player.hp_max.ToString(); hp_max_txt.text = "/" + player.hp_max.ToString();
AvatarData adata = AvatarData.Get(player.avatar); // 默认头像
if (avatar != null && adata != null && !killed) string avatarId = !string.IsNullOrEmpty(player.avatar) ? player.avatar : "horse";
avatar.SetAvatar(adata); string avatarPath = "Avatar/" + avatarId + ".png";
delayed_damage_timer -= Time.deltaTime; // 设置头像路径
if (!IsDamagedDelayed()) SetAvatarByPath(avatarPath);
prev_hp = player.hp;
} }
@@ -94,6 +93,17 @@ namespace TcgEngine.UI
} }
} }
/// <summary>
/// 通过路径设置头像
/// </summary>
private void SetAvatarByPath(string avatarPath)
{
if (avatar != null && !killed)
{
avatar.SetAvatarPath(avatarPath);
}
}
void SlowUpdate() void SlowUpdate()
{ {
Player player = GetPlayer(); Player player = GetPlayer();