物品弹出提示框
效果图
利用Toggle实现物品选中效果
向背包里层pnlGrid添加一个Toggle Group
修改Item预制体,将其修改为Toggle
向Item添加Toggle组件
默认Is On不选中
其余的设置不变,多了一个Checkmark,即IsOn为True时会显示该图片,所以设置一张图片。
预制体里不能设置Toggle的ToggleGroup,需要在代码里控制,修改UIItem脚本
public class UIItem : MonoBehaviour, IPointerClickHandler {
private Image m_Icon;
private Text m_TxtName;
private Text m_TxtCount;
private ItemEntity m_Item;
private Toggle m_Toggle;
private ToggleGroup m_ToggleGroup;
public event Action<ItemEntity> PointerClick;
void Awake()
{
this.m_Icon = UIHelper.FindChild<Image>(transform, "imgIcon");
this.m_TxtName = UIHelper.FindChild<Text>(transform, "imgName/Text");
this.m_TxtCount = UIHelper.FindChild<Text>(transform, "imgCount/Text");
this.m_Toggle = transform.GetComponent<Toggle>();
}
public void SetInfo(ItemEntity item)
{
this.m_Item = item;
this.m_TxtName.text = item.Name;
this.m_Icon.overrideSprite = Resources.Load<Sprite>(item.IconPath);
this.m_ToggleGroup = transform.parent.parent.GetComponent<ToggleGroup>();
this.m_Toggle.group = this.m_ToggleGroup;
//For Test
this.m_TxtCount.text = item.StackCount.ToString();
}
public void OnPointerClick(PointerEventData eventData)
{
if (PointerClick != null)
PointerClick(m_Item);
}
}
这里将控件都改为在Awake里获取了,界面赋值,不知道为什么老会丢失。
弹出界面
其他控件不描述了,其中在基础属性里面用了滚动效果,如果属性太多就会出现滚动条,可以进行滑动。
主要是Show方法,其余都是显示的判断拼接。
调用过程:
1.添加UIItem的时候,会将UIItem对应的ItemEntity存储到每一个UIItem中
2. UIInventory注册了UIItem的PointerClick事件,当UIItem被点击后,就会通知UIInventory,并把自己的ItemEntity传给UIInventory
3. 当UIInventory接到通知后,就会调用事件参数里的ItemEntity信息
public class UIItemToolTip : UISce