从编辑器设置 UnityEvents 并使它们调用正确的参数

Kan*_*bot 6 unity-game-engine

我与UnityEvents工作作为说明这里。那里写着

在 Inspector 中配置 UnityEvent 时,支持两种类型的函数调用:

静止的。静态调用是预配置的调用,具有在 UI 中设置的预配置值。这意味着当回调被调用时,目标函数将使用已输入 UI 的参数调用。

动态的。使用从代码发送的参数调用动态调用,并且这绑定到正在调用的 UnityEvent 类型。UI 过滤回调,只显示对 UnityEvent 有效的动态调用。

所以我得到一个带有参数的 UnityEvent

 public class UnityEventFloat : UnityEvent<float>
    {
    }
public UnityEventFloat OnUpdateEvent;
Run Code Online (Sandbox Code Playgroud)

这在检查器中显示为

输入到 UnityEvent 的回调

如您所见,我setWaitTime向 UnityEvent添加了一个回调函数。函数有这个形状 public void setWaitTime(float t)

之后 UnityEvent 将在代码中被调用为

OnUpdateEvent.Invoke(aValue);
Run Code Online (Sandbox Code Playgroud)

尝试所有这些,它不能很好地工作,因为调用时函数使用作为参数 0(如在检查器中)我想要的是它使用参数调用函数aValue(这是代码中的内部变量)

我怎样才能做到这一点?我想我不太理解文档中的引用。我的情况就像“静态”一样,我要求它像“动态”一样工作


编辑2:

我必须解决这个问题,所以我要把它写在一个答案中


编辑:(旧)我尝试了建议的答案,我得到了这个 在此处输入图片说明 我不知道这如何解决问题(注意现在参数是脚本。但这是在同一个脚本中(SliderGestureControl))

Kan*_*bot 9

我终于要让它工作了。显然我在从下拉列表中选择函数时犯了一个错误。我选择了“静态”标签下的功能,但我应该选择了相同的功能,但位于列表顶部的“动态”标签下(我没有看到)。

因此,该函数setWaitTime在检查器中没有任何参数(因此它动态地使用 UnityEvent.