【发布时间】:2017-03-14 18:39:11
【问题描述】:
我正在尝试创建一个注册场景。当用户输入无效的姓名、电子邮件和/或密码时,我想显示三个面板。我在开始时隐藏了面板。这样可行。但是,当我输入无效信息并单击按钮时,面板不会显示。当validName、validEmail 和validPassword 为假时,它会进入 ShowNamePanel() 并卡住。
我的代码有什么问题?
public GameObject namePanel;
public GameObject emailPanel;
public GameObject passwordPanel;
public void Start ()
{
HideNamePanel ();
HideEmailPanel ();
HidePasswordPanel ();
}
public void ButtonClick ()
{
Debug.Log ("1. Button clicked.");
CreateUser ();
}
/*
* Sends post request to create new user if name, email, and
* password are valid.
*/
public void CreateUser ()
{
validName = IsValidName (username);
validEmail = IsValidEmailAddress (email);
validPW = IsValidPassword (password);
//validNewUserCombo = IsValidNewUserCombo (email, password);
if (validName && validEmail && validPW) {
Debug.Log ("6. VALID INPUTS");
CallAPI ();
} else {
Debug.Log ("8. INVALID INPUTS");
if (validName == false) {
ShowNamePanel ();
}
if (validEmail == false) {
ShowEmailPanel ();
}
if (validPW == false) {
ShowPasswordPanel ();
}
}
}
public void ShowNamePanel() {
Debug.Log ("shownamepanel");
namePanel.SetActive (true);
}
public void HideNamePanel() {
namePanel.SetActive (false);
}
public void ShowEmailPanel() {
Debug.Log ("showemailpanel");
emailPanel.SetActive (true);
}
public void HideEmailPanel() {
emailPanel.SetActive (false);
}
public void ShowPasswordPanel() {
Debug.Log ("showpasswordpanel");
passwordPanel.SetActive (true);
}
public void HidePasswordPanel() {
passwordPanel.SetActive (false);
}
【问题讨论】:
-
您是否打算将您对 passwordPanel.SetActive (true) 的调用和其他 SetActive(true) 调用注释掉?
-
卡住是什么意思,是不是崩溃了?
-
@JHH 是的,我正在测试以确保它进入其他 Show 方法。当我取消注释这些行时,它会卡在
namePanel.SetActive (true);中并且永远不会进入其他方法。 -
@CNuts 不,它不会崩溃。当 name、email 和 password 为 false 时,它应该出现在所有三个 Show 方法中。但是,它进入
ShowNamePanel(),到达namePanel.SetActive (true);,然后就没有进展了。 -
你可以试试移动你的namePanel.SetActive(true);在 if 中而不是在方法中使用它。