using System.Collections; using System.Collections.Generic; using TcgEngine.Client; using UnityEngine; namespace TcgEngine.UI { public class TaskPanel : UIPanel { public Transform taskListRoot; public GameObject taskItemPrefab; private Dictionary taskItems = new Dictionary(); public Dictionary allTaskData = new Dictionary(); protected override void Awake() { base.Awake(); // 清除所有子集 ClearTasks(); } protected override void Start() { base.Start(); Show(); } public void RefreshTasks(List playerTasks) { if (playerTasks == null) return; ClearTasks(); foreach (var playerTask in playerTasks) { if (!allTaskData.TryGetValue(playerTask.taskId,out TaskData taskConfig)) { Debug.LogWarning($"未找到配置:{playerTask.taskId}"); continue; } GameObject go = Instantiate(taskItemPrefab, taskListRoot); TaskItem item = go.GetComponent(); if (item != null) { item.SetTask(taskConfig, playerTask); taskItems[playerTask.taskId] = item; } } } private void ClearTasks() { // 删除已有任务Item foreach (Transform child in taskListRoot) { Destroy(child.gameObject); } taskItems.Clear(); } public override void AfterHide() { base.AfterHide(); ClearTasks(); } } }