using System.Linq; using AibisDream.SaveSystem; using TMPro; using UnityEngine; using UnityEngine.UI; namespace AibisDream { public class SaveFileUIController : MonoBehaviour { #region 索引 public Button buttonPrefab; public Transform buttonParent; public Button returnButton; #endregion private void Start() { returnButton.onClick.AddListener(HideSaveFileUI); } public void ShowSaveFileUI() { // 清空旧按钮 foreach (Transform child in buttonParent) { Destroy(child.gameObject); } var slots = SlotManager.GetSlotViewModels() .Where(slot => !slot.IsEmpty) .OrderByDescending(slot => slot.SavedAt) .ToArray(); foreach (var slot in slots) { var button = Instantiate(buttonPrefab, buttonParent); var label = string.IsNullOrEmpty(slot.SceneSoName) ? $"Slot {slot.SlotIndex}" : slot.SceneSoName; button.GetComponentInChildren().text = label; var slotIndex = slot.SlotIndex; button.onClick.AddListener(() => OnSlotSelected(slotIndex)); } gameObject.SetActive(true); } private void OnSlotSelected(int slotIndex) { gameObject.SetActive(false); GameManager.Instance.StartWithSlot(slotIndex); } private void HideSaveFileUI() { gameObject.SetActive(false); } } }