无法将类型“UnityEngine.Events.UnityAction”隐式转换为“UnityEngi

本文关键字:string 转换 UnityEngi 类型 UnityEngine UnityAction Events | 更新日期: 2023-09-27 18:34:28

我想按照教程通过标准 Unity 侦听器发送参数。

mbListener = new UnityAction<string>(SomeFunction);
void SomeFunction(string _message)
{
    Debug.Log ("Some Function was called!");
}

为什么出现上述错误消息失败?顺便说一句,我正在寻找实用的答案,真的不在乎技术谈话。

(NB Unity 自己的手册说它可以处理参数,但我无法弄清楚为什么这是错误的(。

无法将类型“UnityEngine.Events.UnityAction<string>”隐式转换为“UnityEngi

你宣布mbListener是什么?可能是它的类型 - UnityAction.将其声明为 UnityAction 并为其分配UnityAction<string>会导致问题。

根据您的要求,您可以执行以下 2 个中的任何一个来修复 -

UnityAction<string> mbListener = new UnityAction<string>(SomeFunction);

UnityAction mbListener = new UnityAction(SomeFunction);
void SomeFunction()
{
    Debug.Log ("Some Function was called!");
}

编辑正如@MotoSV指出的那样...你应该用mbListener("String parameter");来称呼它

mbListener 是您要调用的任何函数/列表器的占位符。当您需要调用它时,只需调用将参数传递给它的 UnityAction 变量。所以mbListener("String parameter");会为你工作。