我正在使用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类中订阅一个方法。
答案 0 :(得分:0)
我是个白痴,没有意识到我要订阅的方法的末尾有括号,这意味着我试图订阅方法调用的结果,而不是方法本身。
感谢丹尼斯。