我为什么不能预订适合其他班级委托人签名的方法?

时间:2018-08-16 08:29:55

标签: c# unity3d delegates

我正在使用Brackey的YouTube教程进行库存。我有一个Inventory类和InventoryUI类。

public class Inventory : MonoBehaviour {

#region Singleton
public static Inventory instance;

private void Awake()
{
    if (instance != null)
    {
        Debug.LogWarning("More than one instance found!");
        return;
    }
    instance = this;
}
#endregion

public delegate void OnItemChanged();

public OnItemChanged OnItemChangedCallBack; }

public class InventoryUi : MonoBehaviour {

Inventory inventory;

// Use this for initialization
void Start() {
    inventory = Inventory.instance;
    inventory.OnItemChangedCallBack += UpdateUI();
}

public void UpdateUI()
{
    for (int i = 0; i < slots.Length; i++)
    {
        if (i < inventory.items.Count)
        {
            slots[i].AddItem(inventory.items[i]);
        }
        else
        {
            slots[i].ClearSlot();
        }
    }
    Debug.Log("Updating inventory ui");
}

}

在我订阅UpdateUI方法的地方,它说“无法将类型'void'隐式转换为'Inventory.OnItemChanged'”

我完全迷失了为什么不能使用这种方法。我可以在具有相同签名的Inventory类中订阅一个方法。

1 个答案:

答案 0 :(得分:0)

我是个白痴,没有意识到我要订阅的方法的末尾有括号,这意味着我试图订阅方法调用的结果,而不是方法本身。

感谢丹尼斯。