using System.Collections.Generic; using AlicizaX; using AlicizaX.Resource.Runtime; using AlicizaX.UI; using AlicizaX.UI.Runtime; using Cysharp.Threading.Tasks; using Game.UI; using GameLogic.UI; using UnityEngine; using UnityEngine.EventSystems; public class TestData : IMixedViewData { public string Name; public string TemplateName { get; set; } } [UIUpdate] [Window(UILayer.UI, false, 3)] public class UILoadUpdate : UITabWindow { private UGMixedList _list; protected override void OnInitialize() { _list = UGListCreateHelper.CreateMixed(baseui.ScrollViewTestList); _list.RegisterItemRender(nameof(ImageViewHolder)); _list.RegisterItemRender(nameof(TextViewHolder)); baseui.ImgBackGround.color = Color.gray; baseui.BtnTest.onClick.AddListener(OnTestClick); SetListAndFocusFirst(CreateTestDataList(1000000)); baseui.BtnQTest.onClick.AddListener(OnBtnQTestClick); baseui.BtnEscTest.onClick.AddListener(OnBtnEscTestClick); baseui.BtnETest.onClick.AddListener(OnBtnETestClick); } private void OnBtnETestClick() { Log.Info("Btn E Click"); } private void OnBtnEscTestClick() { Log.Info("Btn Esc Click"); CloseSelf(); } private void OnBtnQTestClick() { Log.Info("Btn Q Click"); } private static List CreateTestDataList(int count) { List testDataList = new List(count); for (int i = 0; i < count; i++) { var prefabName = i % 2 == 0 ? nameof(TextViewHolder) : nameof(ImageViewHolder); testDataList.Add(new TestData() { Name = $"TestProp:{i}", TemplateName = prefabName }); } return testDataList; } private void SetListAndFocusFirst(List dataList) { _list.Data = dataList; FocusFirstItemAsync().Forget(); } private async UniTaskVoid FocusFirstItemAsync() { await UniTask.NextFrame(); // _list.RecyclerView.TryFocusEntry(MoveDirection.Down,true); } private void OnTestClick() { GameApp.UI.ShowUISync(); } }