using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Cysharp.Threading.Tasks; using DefaultNamespace; using TMPro; using WXGame.Network; namespace DefaultNamespace.Component { /// /// 好友项组件 /// public class FriendItemComponent : MonoBehaviour { [Header("UI组件引用")] [SerializeField] private RawImage avatarImage; // 头像图片组件 [SerializeField] private TMP_Text usernameText; // 用户名文本组件 [SerializeField] private TMP_Text levelText; // 等级文本组件 [Header("调试设置")] [SerializeField] private bool enableDebugLog = true; // 是否启用调试日志 // 私有字段 private FriendData friendData; // 好友数据 /// /// 初始化好友项数据 /// /// 好友数据 public void InitializeFriendItem(FriendData data) { if (data == null) { Debug.Log("好友数据为空,无法初始化"); return; } friendData = data; Debug.Log($"开始初始化好友项: {data.user_username}"); // 设置用户名和等级 SetUserInfo(data); // 异步下载头像 DownloadAvatarAsync(data.user_image).Forget(); } /// /// 设置用户信息(用户名和等级) /// /// 好友数据 private void SetUserInfo(FriendData data) { try { // 设置用户名 if (usernameText != null) { usernameText.text = string.IsNullOrEmpty(data.user_username) ? "未知用户" : data.user_username; Debug.Log($"设置用户名: {usernameText.text}"); } else { Debug.Log("用户名文本组件未设置"); } // 设置等级 if (levelText != null) { levelText.text = $"等级: {data.user_honor_level}"; Debug.Log($"设置等级: {levelText.text}"); } else { Debug.Log("等级文本组件未设置"); } } catch (Exception ex) { Debug.Log($"设置用户信息时发生异常: {ex.Message}"); } } /// /// 异步下载头像 /// /// 头像URL /// UniTask private async UniTask DownloadAvatarAsync(string imageUrl) { try { // 检查URL是否有效 if (string.IsNullOrEmpty(imageUrl)) { Debug.Log("头像URL为空,使用默认头像"); return; } Debug.Log($"开始下载头像: {imageUrl}"); // 使用WebRequestManager下载图片 Texture2D texture = await WebRequestManager.Instance.DownloadImageAsync(imageUrl); if (texture != null) { // 设置头像 SetAvatarTexture(texture); Debug.Log($"头像设置完成,尺寸: {texture.width}x{texture.height}"); } else { Debug.Log("头像下载失败,使用默认头像"); } } catch (Exception ex) { Debug.Log($"下载头像时发生异常: {ex.Message}"); } } /// /// 设置头像纹理 /// /// 要设置的纹理 private void SetAvatarTexture(Texture2D texture) { try { if (avatarImage != null && texture != null) { avatarImage.texture = texture; Debug.Log("头像纹理设置成功"); } else { Debug.Log("头像图片组件未设置或纹理为空"); } } catch (Exception ex) { Debug.Log($"设置头像纹理时发生异常: {ex.Message}"); } } /// /// 获取当前好友数据 /// /// 好友数据 public FriendData GetFriendData() { return friendData; } /// /// 清理图片缓存(已移除,使用WebRequestManager的简单缓存) /// public static void ClearCache() { Debug.Log("[FriendItemComponent] 缓存清理功能已移除,使用WebRequestManager的简单缓存"); } /// /// 获取缓存统计信息(已移除,使用WebRequestManager的简单缓存) /// /// 缓存统计信息 public static string GetCacheStats() { return "使用WebRequestManager的简单缓存"; } } }