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; protected override void Awake() { // 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_Btn.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 void ShowMe() { base.ShowMe(); } public override void HideMe() { base.HideMe(); } 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) => { Debug.Log(".1"); Bootstrap.Instance.uiManager.HidePanel(); }); //Bootstrap.Instance.uiManager.HidePanel(); break; default: List textures = LoadPPTTest.LoadPPTItems(btnName); if (textures != null) { DisplayPPT(textures); } break; } await LoadPPTTest.RefreshScrollView(content, scrollRect); } 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(texture.width, texture.height); } } }