修改默认卡组&卡背图片
This commit is contained in:
@@ -12,6 +12,9 @@ namespace TcgEngine.Client
|
||||
public class HandCardBack : MonoBehaviour
|
||||
{
|
||||
public Image card_sprite;
|
||||
|
||||
[Header("Dynamic Art Path")]
|
||||
[SerializeField] private string cardback_path;
|
||||
|
||||
private RectTransform rect;
|
||||
|
||||
@@ -21,19 +24,79 @@ namespace TcgEngine.Client
|
||||
{
|
||||
card_list.Add(this);
|
||||
rect = GetComponent<RectTransform>();
|
||||
SetCardback(null);
|
||||
|
||||
// 如果有设置路径,自动加载
|
||||
if (!string.IsNullOrEmpty(cardback_path))
|
||||
{
|
||||
LoadCardbackSprite();
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCardback(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
card_list.Remove(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在 Inspector 中修改值时自动重新加载
|
||||
/// </summary>
|
||||
private void OnValidate()
|
||||
{
|
||||
if (Application.isPlaying && !string.IsNullOrEmpty(cardback_path))
|
||||
{
|
||||
LoadCardbackSprite();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetCardback(CardbackData cb)
|
||||
{
|
||||
if (cb != null)
|
||||
card_sprite.sprite = cb.GetCardback();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置卡背图片,使用本地图片路径
|
||||
/// </summary>
|
||||
public void SetCardbackPath(string path)
|
||||
{
|
||||
cardback_path = path;
|
||||
LoadCardbackSprite();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前卡背路径
|
||||
/// </summary>
|
||||
public string GetCardbackPath()
|
||||
{
|
||||
return cardback_path;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载卡背图片
|
||||
/// </summary>
|
||||
private void LoadCardbackSprite()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(cardback_path))
|
||||
{
|
||||
Sprite dynamicSprite = SpriteLoader.Get()?.LoadSprite(cardback_path);
|
||||
if (dynamicSprite != null)
|
||||
{
|
||||
card_sprite.sprite = dynamicSprite;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"HandCardBack 卡背图片加载失败: {cardback_path}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"HandCardBack cardback_path为空");
|
||||
}
|
||||
}
|
||||
|
||||
public RectTransform GetRect()
|
||||
{
|
||||
|
||||
@@ -17,6 +17,12 @@ namespace TcgEngine.Client
|
||||
public float card_spacing = 100f;
|
||||
public float card_angle = 10f;
|
||||
public float card_offset_y = 10f;
|
||||
|
||||
[Header("Cardback Settings")]
|
||||
[Tooltip("是否使用路径方式加载卡背图片")]
|
||||
public bool usePathMode = false;
|
||||
[Tooltip("卡背图片路径,仅在 usePathMode 为 true 时使用")]
|
||||
public string cardback_path = "";
|
||||
|
||||
private List<HandCardBack> cards = new List<HandCardBack>();
|
||||
|
||||
@@ -37,8 +43,20 @@ namespace TcgEngine.Client
|
||||
{
|
||||
GameObject new_card = Instantiate(card_prefab, card_area);
|
||||
HandCardBack hand_card = new_card.GetComponent<HandCardBack>();
|
||||
CardbackData cbdata = CardbackData.Get(player.cardback);
|
||||
hand_card.SetCardback(cbdata);
|
||||
|
||||
// 根据设置选择加载方式
|
||||
if (usePathMode && !string.IsNullOrEmpty(cardback_path))
|
||||
{
|
||||
// 使用路径方式
|
||||
hand_card.SetCardbackPath(cardback_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 使用传统的 CardbackData 方式
|
||||
CardbackData cbdata = CardbackData.Get(player.cardback);
|
||||
hand_card.SetCardback(cbdata);
|
||||
}
|
||||
|
||||
RectTransform card_rect = new_card.GetComponent<RectTransform>();
|
||||
card_rect.anchoredPosition = new Vector2(0f, 100f);
|
||||
cards.Add(hand_card);
|
||||
|
||||
Reference in New Issue
Block a user