using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TcgEngine.Client { /// /// Same as HandCard, but simpler version for the opponent's cards /// public class HandCardBack : MonoBehaviour { public Image card_sprite; [Header("Dynamic Art Path")] [SerializeField] private string cardback_path; private RectTransform rect; private static List card_list = new List(); void Awake() { card_list.Add(this); rect = GetComponent(); // 如果有设置路径,自动加载 if (!string.IsNullOrEmpty(cardback_path)) { LoadCardbackSprite(); } else { SetCardback(null); } } private void OnDestroy() { card_list.Remove(this); } /// /// 在 Inspector 中修改值时自动重新加载 /// private void OnValidate() { if (Application.isPlaying && !string.IsNullOrEmpty(cardback_path)) { LoadCardbackSprite(); } } public void SetCardback(CardbackData cb) { if (cb != null) card_sprite.sprite = cb.GetCardback(); } /// /// 设置卡背图片,使用本地图片路径 /// public void SetCardbackPath(string path) { cardback_path = path; LoadCardbackSprite(); } /// /// 获取当前卡背路径 /// public string GetCardbackPath() { return cardback_path; } /// /// 加载卡背图片 /// 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() { if (rect == null) return GetComponent(); return rect; } } }