C# InputField(Unity)的提示/错误消息

C# InputField(Unity)的提示/错误消息,c#,unity3d,input-field,hint,C#,Unity3d,Input Field,Hint,使用Android/Java,您可以使用类似的东西 myEditText.setError("This field cannot be blank"); 要在编辑文本中显示输入文本的错误消息/提示,请执行以下操作: 在C#中,Unity的输入字段是否有类似的功能?或者您是否必须自己制作(例如,文本在5秒后自动消失) 在Unity/Windows游戏中,是否有一种常用的设计/布局来显示这样的信息?没有,但您可以自己制作 添加新的将游戏对象作为子对象添加到InputField附加到的游戏对象。

使用Android/Java,您可以使用类似的东西

myEditText.setError("This field cannot be blank");
要在编辑文本中显示输入文本的错误消息/提示,请执行以下操作:

在C#中,Unity的
输入字段
是否有类似的功能?或者您是否必须自己制作(例如,文本在5秒后自动消失)


在Unity/Windows游戏中,是否有一种常用的设计/布局来显示这样的信息?

没有,但您可以自己制作

添加新的将游戏对象作为子对象添加到InputField附加到的游戏对象。 你可以随意编辑这个游戏对象,但只需添加一个UnityEngine.UI.Text就可以了,并确保新的游戏对象没有通过defualt激活

现在,使用您的InputField向游戏对象添加脚本,并向其中添加如下内容:

public void OnStoppedEditing(string text) {
  if (text == "") { 
    errorWindow.SetActive(true); 
    errorText.text = "This field cannot be blank"; 

  }

}
public void Start() {
   //adds a listener that runs OnStoppedEditing when you stop editing myField
   myField.onEndEdit.AddListener(delegate {OnStoppedEditing(myField); }); 

   myField = gameObject.getComponent<InputField>();
   errorText = errorWindow.getComponent<Text>();
}
public GameObject errorWindow;
Text errorText; 
InputField myField;
public void OnStoppedEditing(字符串文本){
如果(文本==“”){
errorWindow.SetActive(真);
errorText.text=“此字段不能为空”;
}
}
公开作废开始(){
//添加在停止编辑myField时运行OnStoppedEditing的侦听器
myField.onEndEdit.AddListener(委托{OnStoppedEditing(myField);});
myField=gameObject.getComponent();
errorText=errorWindow.getComponent();
}
公共游戏对象错误窗口;
文本错误文本;
输入字段myField;
确保在脚本顶部添加“using UnityEngine.UI;”

保存脚本并将errorWindow应用于您创建的子游戏对象


请注意,我没有测试这段代码(我现在无法使用unity访问pc),因此如果它有任何错误,请询问:)

谢谢!何时调用
OnStoppedEditing
?你是要按“提交”按钮,还是在你输入最后一封信后再等几秒钟?在按下“保存”按钮之前,我不会进行验证,因此我的代码看起来有点不同(我只使用了
onClick
),此外,我还向输入字段添加了一个红色轮廓,并在下次按下“保存”按钮时再次禁用它(如果一切正常)。单击字段外时,会立即调用OnStoppedEdit。如果您只想显示该框,可以使用
errorWindow.SetActive(true);errorText.text=“此字段不能为空”只是为了澄清,之所以调用OnStoppedEditing,是因为
myField.onededit.AddListener(委托{OnStoppedEditing(myField);})好的,谢谢你的澄清。我的结论是:点击“保存”调用验证方法。如果输入了密码但未输入用户名,则会在InputField周围添加一个红色轮廓(
userOutline=InputUser.AddComponent();userOutline.effectColor=Color.red;userOutline.effectDistance=new Vector2(3,-3);
),并显示“保存”按钮旁边的文本(已启用)。下一次单击“保存”再次检查所有内容,如果一切正常,则禁用大纲和文本。