using Cysharp.Threading.Tasks; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using UnityEngine; using UnityEngine.UI; public class UI_TipsForPracticePanel : BasePanel { public GameObject pptImagePrefab; public RectTransform content; public ScrollRect scrollRect; //public ScrollRect leftscrollRect; public UI_TipsForPracticePanelPPTNameItem pptNameItem; public RectTransform Left_content; public CanvasGroup canvasGroup; protected override void Awake() { canvasGroup.alpha = 1f; // 1. 提取文件名并解析数字前缀 var sortedItems = Bootstrap.Instance.ppts .Select(path => new { Path = path, Name = LoadPPTTest.PathName(path), Order = LoadPPTTest.ExtractLeadingNumber(LoadPPTTest.PathName(path)) // 提取数字 }) .OrderBy(item => item.Order) // 按数字排序 .ToList(); // 2. 生成排序后的按钮 foreach (var item in sortedItems) { var buttonItem = Instantiate(pptNameItem, Left_content); buttonItem.Init(item.Name); buttonItem.PPTName_Tog.gameObject.name = item.Name; Debug.Log($"已创建按钮: {item.Name} (排序键: {item.Order})"); } base.Awake(); //pptConfig = JsonManager.LoadData("pptConfig"); if (Bootstrap.Instance.ppts == null || Bootstrap.Instance.ppts.Length == 0) { Debug.LogError("PPT路径数组未初始化或为空"); return; } } public override async void ShowMe(int time = 0) { base.ShowMe(); string pptBtnName = Left_content.GetChild(0).GetComponent().PPTName_Tog.gameObject.name; OnClick(pptBtnName); await ToolManager.CanvasFadeIn(canvasGroup, 0.5f); } public override async void HideMe(int time = 0) { base.HideMe(); await ToolManager.CanvasFadeOut(canvasGroup, 0.5f); } protected override async void OnClick(string btnName) { Debug.Log(btnName); switch (btnName) { case "retrun_Btn": Bootstrap.Instance.uiManager.ShowPanel(this, E_UI_Layer.System, (panel) => { Bootstrap.Instance.uiManager.ShowPanel(this, E_UI_Layer.Bot, (panel) => { Debug.Log(".1"); Bootstrap.Instance.uiManager.HidePanel(); Bootstrap.Instance.uiManager.HidePanel(); }); }); //Bootstrap.Instance.uiManager.HidePanel(); break; } await ToolManager.RefreshScrollView(content, scrollRect); } protected override void OnChangeToggle(string togglePath, bool isOn) { base.OnChangeToggle(togglePath, isOn); switch (togglePath) { default: if (isOn) { List textures = LoadPPTTest.LoadPPTItems(togglePath); if (textures != null) { DisplayPPT(textures); } } break; } } private void DisplayPPT(List textures) { foreach (Transform child in content) { Destroy(child.gameObject); } Debug.LogError("texturesCount:" + textures.Count); foreach (var texture in textures) { RawImage rawImage = pptImagePrefab.GetComponent(); RawImage image = Instantiate(rawImage, content); image.texture = texture; image.rectTransform.sizeDelta = new Vector2(1608, 940); } } }