报错:CS1503: 参数1: 无法从”void”转换为“UnityEngine.Events.UnityAction
c# - 无法从 ‘void’ 转换为 ‘System.Action’
您试图将一个返回值为 void 的方法传递给了一个期望 Action 类型的方法,但是将带有参数的方法传递给接受Action类型参数的方法会导致语法错误。
可以使用 lambda 表达式来创建一个 Action,然后将其传递给 Invoke 方法。lambda 表达式允许您在需要 Action 类型的地方提供一段代码块,这段代码块可以是调用方法、执行一些操作等。
创建一个匿名的 Action,用这个 Action 来执行 Method2(testParam) 方法:
Invoke(() => Method2(testParam));
在更显式的情况下,您可以首先将 lambda 表达式赋值给一个 Action 变量,然后将该变量传递给 Invoke 方法,如下所示:
Action a = () => Method2(testParam);
Invoke(a);
这两种方式的作用是相同的,只是一种更为简洁,另一种更为显式。
Invoke(Method1);
Invoke(() => Method1());