using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PanelItemBar : PanelBase { public ItemWidget m_ItemTempalte; public UISimpleGrid m_ItemGrid; public Text m_TextName; private List m_Items = new List(); private int m_CurrentIndex = 0; public override void Set(object param) { for(int i = 0; i < PlayerManager.Instance.items.Count; ++i) { ItemWidget widget = MakeItemWidget(PlayerManager.Instance.items[i]); m_Items.Add(widget); } SelectItemWidget(0); } bool SwitchToLeft() { return Input.GetButtonDown("LeftItem"); } bool SwitchToRight() { return Input.GetButtonDown("RightItem"); } bool UseItem() { return Input.GetButtonDown("Fire3"); } ItemWidget MakeItemWidget(ItemBase item) { ItemWidget widget = Instantiate(m_ItemTempalte); widget.transform.SetParent(m_ItemGrid.transform); widget.gameObject.SetActive(true); widget.GetComponent().anchoredPosition = new Vector2(0, 0); #if UNITY_EDITOR widget.name = "item (" + item.name + ")"; #endif ItemWidgetParam param = new ItemWidgetParam(); //param.onSelected = OnSelectItemWidget; param.item = item; widget.Set(param); return widget; } protected override void Update() { if (SwitchToLeft()) { int newIndex = Mathf.Clamp(m_CurrentIndex - 1, 0, m_Items.Count - 1); SelectItemWidget(newIndex); } if (SwitchToRight()) { int newIndex = Mathf.Clamp(m_CurrentIndex + 1, 0, m_Items.Count - 1); SelectItemWidget(newIndex); } if (UseItem()) { m_Items[m_CurrentIndex].OnUseCallback(); PlayerManager.Instance.UseItem(m_Items[m_CurrentIndex].item); } } void SelectItemWidget(int index) { if(index < 0 || index > m_Items.Count - 1) { return ; } m_Items[m_CurrentIndex].OnDeselectCallback(); m_Items[index].OnSelectCallback(); m_TextName.text = m_Items[index].item.name; m_CurrentIndex = index; } }