如何在Unity3D输入字段UI组件中使用"On Value Change"

jbs*_*ssm 5 c# unity-game-engine

我正在学习如何使用Unity3d的教程,我已经走到了尽头.

我相信在较新版本的Unity中发生了一些变化,因为教程看起来像我正在做的那样工作得很好.

我有一个输入字段UI组件,我想在每次更改时调用C#函数.

根据教程,我只需要使用输入字段(脚本)的"On Value Change"属性,并告诉它调用一个以a string作为参数的函数.

public string playerName;
public void setName (string name)
{
    playerName = name;
    Debug.Log("Set playerName: "+name, gameObject);
    Debug.Log("Get playerName: "+playerName, gameObject);

}
Run Code Online (Sandbox Code Playgroud)

然而,这没有任何作用,我的playerName财产总是空的,我没有收到任何东西name.

我该怎么做呢?我已经看到一个答案在Start()函数中设置一个监听器,然后UnityEvent在这里使用:从输入字段中获取文本

但是有没有其他方法可以使用Unity3d图形编辑器来完成这项工作,而不需要编写如此多的代码?

Hua*_*cha 7

是的,您可以通过检查员添加事件处理程序.选择InputField游戏对象,然后向下滚动到检查器中InputField部分的底部.单击+添加新的事件处理程序,然后选择要调用的接收游戏对象和方法.

使用函数的动态字符串版本将输入字符串作为参数传递.静态参数回调允许您在检查器中设置函数参数,这可能不是您在响应InputField更改时所需的参数.

在此输入图像描述

  • 谢谢,这就是我在做的事情,但后来我发现我需要使用`Dynamic String`赋值而不是`Static Parameters`来选择我的函数.我仍然不知道为什么,但这使它成功. (2认同)

Alb*_*rto 5

通过你的评论,你已经把一切都说清楚了。当您使用动态参数时,输入条目的值将传递给您的函数。当您选择“静态参数”时,检查器中会显示一个新的输入框,供您写入要接收的“静态参数”。

还不确定这有什么用。但应该能清楚地看出区别。