问题描述:背包系统显示物品,当点击背包按钮跳出背包系统Panel,会显示出相应的物品。但当关闭这个Panel时,是隐藏了而不是Destroy,又不想将显示代码放到Update中。就想到了使用委托的方式。当物品发生改动时,触发委托,显示物品。
首先是定义委托。在InventoryList类中。
public delegate void Change();
public Change changeList;
public void ChangeInventoryList(int id, int num)
{
inventoryList[id].num += num;
DelegateEvent();
}
public void DelegateEvent()
{
changeList += ChangeList;
changeList();
}
public void ChangeList()
{}
当物品发生改变时(简单的数量改变),调用ChangeInventoryList()方法即可。之后就是背包系统页面了。
InventoryList.GetInstance().changeList += ShowItem;
ShowItem方法就是显示物品的方法,当任何地方调用了ChangeInventoryList(),都会调用ShowItem()方法。(当然前提是背包页面在层级面板上)
以上,就是简单的Unity中委托的简单使用。