// 本脚本只在不存在时会生成一次。已存在不会再次生成覆盖 using System; using System.Collections.Generic; using FairyGUI; using Fantasy; using UnityEngine; using NBC; using NBF.Fishing2; using UIPanel = NBC.UIPanel; namespace NBF { public partial class BagSelectPanel : UIPanel { //context.data private static Action _selectCallBack; private static ItemType _itemType; private List _items; public static void Show(ItemType itemType, Action callBack) { _itemType = itemType; _selectCallBack = callBack; Show(); } protected override void OnInit() { this.AutoAddClick(OnClick); } protected override void OnShow() { SetList(); } private void OnClick(GComponent btn) { if (btn == BtnCancel) { Hide(); } else if (btn == BtnConfirm) { var selectIndex = List.selectedIndex; if (selectIndex >= 0) { var itemData = _items[selectIndex]; _selectCallBack?.Invoke(itemData.Id); } Hide(); } } private void SetList() { var role = App.Main.GetComponent(); var roleBag = role.GetComponent(); _items = roleBag.GetItemsByType(_itemType); List.RemoveChildrenToPool(); List.defaultItem = BagItem.URL; List.itemRenderer = OnRenderItem; List.selectionMode = ListSelectionMode.Single; List.numItems = _items.Count; } void OnRenderItem(int index, GObject obj) { var itemData = _items[index]; if (obj is BagItem bagItem) { bagItem.SetData(itemData); } } } }