using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class ChooseItemsWin : UIBase { [SerializeField] ItemCell itemCell; [SerializeField] Text nameText; [SerializeField] Text descText; [SerializeField] ScrollerController scroller; [SerializeField] Button openButton; [SerializeField] Text txtChooseNum; [SerializeField] CellView _InitCell; string guid; int itemID; int itemCount; int[][] selectArray; protected override void InitComponent() { openButton.AddListener(() => { if (BoxGetItemModel.Instance.TrySendUse()) { CloseWindow(); } }); } protected override void Start() { _InitCell.cellIdentifier = _InitCell.cellIdentifier + this.GetInstanceID().ToString(); } protected override void OnPreOpen() { BoxGetItemModel.Instance.countChangeAction += OnCountChangeAction; scroller.OnRefreshCell += OnRefreshCell; itemID = ItemTipUtility.mainTipData.baseInfo.itemId; itemCount = ItemTipUtility.mainTipData.baseInfo.count; guid = ItemTipUtility.mainTipData.guid; InitItemsData(); itemCell.Init(new ItemCellModel(itemID, false, itemCount)); var itemConfig = ItemConfig.Get(itemID); nameText.text = itemConfig.ItemName; descText.text = itemConfig.Description; if (string.IsNullOrEmpty(guid)) { //预览 openButton.SetActive(false); } else { BoxGetItemModel.Instance.ClearAll(); openButton.SetActive(true); } int nowChooseItemCount = BoxGetItemModel.Instance.GetNowChooseItemCount(); txtChooseNum.text = Language.Get("L1100", Language.Get("L1107"), UIHelper.AppendColor(TextColType.DarkGreen, $"{nowChooseItemCount}/{itemCount}")); CreateScroller(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; } void CreateScroller() { scroller.Refresh(); for (int i = 0; i < selectArray.Length; i++) { scroller.AddCell(ScrollerDataType.Header, i); } scroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as ChooseItemsCell; _cell.Display(selectArray[cell.index], guid); } void InitItemsData() { selectArray = BoxGetItemModel.Instance.GetSelectItemsByID(itemID); } private void OnCountChangeAction() { int nowChooseItemCount = BoxGetItemModel.Instance.GetNowChooseItemCount(); txtChooseNum.text = Language.Get("L1100", Language.Get("L1107"), UIHelper.AppendColor(TextColType.DarkGreen, $"{nowChooseItemCount}/{itemCount}")); } }