当在 Unity 中运行某个方法时,我尝试向按钮添加一个监听器。
[SerializeField] private CraftTextController craftTextController;
[SerializeField] private int index;
private void Purchase()
{
button.onClick.RemoveAllListeners();
button.onClick.AddListener(craftTextController.DisplayItemText(index));
}
在我的另一个脚本中,
public void DisplayItemText(int index)
{
// code
}
代码在 AddListener 上返回错误,“无法从‘void’转换为‘UnityEngine.Events.UnityAction’
感谢您的任何帮助,如果需要更多代码,请告诉我。
我认为错误在于抱怨整个签名。
你的方法接受一个参数
while
UnityAction
是无参数的你想要例如
或者 - 如果你也想取消订阅,这一点尤其重要 - 将 lambda 表达式本身存储在类字段中
或者有适当的包装方法
了解有关委托和lambda 表达式的更多信息