改动与优化

This commit is contained in:
FloatGaming
2026-07-20 22:19:25 +08:00
parent 0a0872c4f4
commit b5d1cdcbc5
83 changed files with 2475 additions and 276 deletions
@@ -42,6 +42,7 @@ public class dailyTaskManager : MonoBehaviour
private readonly List<GameObject> spawnedTaskItems = new List<GameObject>();
private readonly Dictionary<int, Sprite> rewardSpriteByItemId = new Dictionary<int, Sprite>();
private readonly Dictionary<int, storeItemSO> rewardStoreItemByItemId = new Dictionary<int, storeItemSO>();
private Coroutine layoutRefreshRoutine;
private void Start()
{
@@ -105,6 +106,7 @@ public class dailyTaskManager : MonoBehaviour
UpdateTodayProgress(tasks.Count, completedCount);
RefreshOneKeyRewardButtonState(tasks);
RefreshTaskButtonState();
RequestTaskListLayoutRebuild();
}
private void SpawnTaskItem(int index, DailyTaskViewData taskView)
@@ -116,6 +118,7 @@ public class dailyTaskManager : MonoBehaviour
var instance = Instantiate(dailyTaskItemPrefab, dailyTaskItemParent);
spawnedTaskItems.Add(instance);
UI_OrderedEntryAnimator.PlayFadeOnly(instance, index, 0.16f, 0.012f, true);
var controller = instance.GetComponent<taskPrefabController>();
if (controller == null)
@@ -309,6 +312,48 @@ public class dailyTaskManager : MonoBehaviour
refreshTaskBtn.interactable = taskPool != null && DailyTaskService.EnsureInstance().GetRemainingRefreshCount() > 0;
}
private void RequestTaskListLayoutRebuild()
{
if (dailyTaskItemParent == null)
{
return;
}
if (layoutRefreshRoutine != null)
{
StopCoroutine(layoutRefreshRoutine);
layoutRefreshRoutine = null;
}
if (isActiveAndEnabled)
{
layoutRefreshRoutine = StartCoroutine(RebuildTaskListLayoutNextFrame());
return;
}
RebuildTaskListLayoutNow();
}
private System.Collections.IEnumerator RebuildTaskListLayoutNextFrame()
{
yield return null;
RebuildTaskListLayoutNow();
layoutRefreshRoutine = null;
}
private void RebuildTaskListLayoutNow()
{
RectTransform target = dailyTaskItemParent as RectTransform;
if (target == null)
{
return;
}
Canvas.ForceUpdateCanvases();
LayoutRebuilder.ForceRebuildLayoutImmediate(target);
Canvas.ForceUpdateCanvases();
}
private Sprite ResolveRewardSprite(userTasksPool.TaskDefinition definition)
{
if (definition == null)