问题描述
我正在创建一个小型登录页面示例,在按下播放键时,如果电子邮件/密码/确认密码不符合设置的条件,我将不会收到任何预期的调试消息。
完整代码如下:
套餐
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using System;
using System.Text.RegularExpressions;
public class Register : MonoBehavIoUr
{
public GameObject username;
public GameObject email;
public GameObject password;
public GameObject confPassword;
private string Username;
private string Email;
private string Password;
private string ConfPassword;
private string form;
private bool EmailValid = false;
private string[] Characters = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","O","N","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0","_","-" };
用户名、邮箱、密码和确认密码的启动和设置条件。
// Start is called before the first frame update
void Start()
{
}
public void RegisterButton()
{
print("Registration Successful");
bool UN = false;
bool EM = false;
bool PW = false;
bool CPW = false;
if (Username != "")
{
if (!System.IO.File.Exists(@"E:/UnityTestFolder/" + Username + ".txt"))
{
UN = true;
}
else
{
Debug.LogWarning("Username Taken");
}
}
else
{
Debug.LogWarning("Username field empty");
}
if (Email != "")
{
EmailValidation();
if (EmailValid)
{
if (Email.Contains("@"))
{
if (Email.Contains("."))
{
EM = true;
}
else
{
Debug.LogWarning("Email is incorrect");
}
}
else
{
Debug.LogWarning("Email is incorrect");
}
}
else
{
Debug.LogWarning("Email is incorrect");
}
}
else
{
Debug.LogWarning("Email field empty ");
}
if (Password != "")
{
if (Password.Length > 5)
{
PW = true;
}
else
{
Debug.LogWarning("Pass must be at least 6 characters long!");
}
}
else
{
Debug.LogWarning("Password field empty");
}
if (ConfPassword != "")
{
if (ConfPassword == Password)
{
CPW = true;
}
else
{
Debug.LogWarning("Passwords do not match!");
}
}
else
{
Debug.LogWarning("Confirm password field empty");
}
if (UN == true &&EM == true &&PW == true &&CPW == true)
{
bool Clear = true;
int i = 1;
foreach (char c in Password)
{
if (Clear)
{
Password = "";
Clear = false;
}
i++;
char Encrypted = (char)(c * i);
Password += Encrypted.ToString();
}
form = (Username + "\n" + Email + "\n" + Password);
System.IO.File.WriteallText(@"E:/ UnityTestFolder / " + Username + ".txt",form);
username.GetComponent<InputField>().text = "";
email.GetComponent<InputField>().text = "";
password.GetComponent<InputField>().text = "";
confPassword.GetComponent<InputField>().text = "";
print("Registration complete");
}
}
调用更新 - 按 Tab 按钮可在各种占位符之间导航。
void Update()
{
if (Input.GetKeyDown(KeyCode.Tab))
{
if (username.GetComponent<InputField>().isFocused)
{
email.GetComponent<InputField>().Select();
}
if (email.GetComponent<InputField>().isFocused)
{
password.GetComponent<InputField>().Select();
}
if (password.GetComponent<InputField>().isFocused)
{
confPassword.GetComponent<InputField>().Select();
}
}
if (Input.GetKeyDown(KeyCode.Return))
{
if (Password != ""&&Email != ""&&Password != ""&&ConfPassword != "")
{
RegisterButton();
}
}
Username = username.GetComponent<InputField>().text;
Email = email.GetComponent<InputField>().text;
Password = password.GetComponent<InputField>().text;
ConfPassword = confPassword.GetComponent<InputField>().text;
}
void EmailValidation()
{
bool SW = false;
bool EW = false;
for (int i = 0; i < Characters.Length; i++)
{
if (Email.StartsWith(Characters[i]))
{
SW = true;
}
}
for (int i = 0; i < Characters.Length; i++)
{
if (Email.EndsWith(Characters[i]))
{
EW = true;
}
}
if (SW = true &&EW == true)
{
EmailValid = true;
}
else
{
EmailValid = false;
}
}
}
感谢您的帮助。
解决方法
在此处添加 [ExecuteInEditMode] 属性:
[ExecuteInEditMode]
public class Register : MonoBehaviour
,
我已经解决了,这是一个愚蠢的错误,我只是在“点击时”组件中有错误的 GameObject
。
再次感谢所有帮助。