Задача: разработать простую сцену с именем пользователя и паролем. Использование инструментов, предоставляемых Unity.
Настройка сцены
Простая настройка сцены У меня есть холст, содержащий три объекта.
- Фон: содержит фоновое изображение, заголовок, отладочный текст и поля ввода.
- Создать объект учетной записи: содержит две кнопки для подтверждения создания учетной записи и кнопку отмены для возврата на экран входа в систему.
- Объект входа: содержит две кнопки. Кнопка входа проверяет учетные данные пользователя, а кнопка создания учетной записи изменяет экран создания учетной записи.
Имя пользователя и сценарий входа
Этот скрипт прикреплен к объекту игрового менеджера, содержит все функции для управления кнопками и хранит учетные данные пользователя.
private void Start() { DebugTextPrompt(""); _accountCreationgCanvas.SetActive(false); }
Начните с установки пустого текстового значения отладки и установите для объекта создания учетной записи значение false.
public void CreateAccountButton() { ChangePlaceHolderText("Create Username...", "Create Password..."); _loginCanvas.SetActive(false); _accountCreationgCanvas.SetActive(true); DebugTextPrompt(""); ResetTextInput(); _userName = null; _password = null; }
Когда пользователь нажимает кнопку создания учетной записи, это активирует объект создания учетной записи и отключает объект входа в систему на холсте. Перестановка кнопок и изменение полей ввода текста.
public void ConfirmAccountCreation() { if (_userName.Length < 4) { DebugTextPrompt("Error Username is too short (Greater Than 4 Characters)."); ResetTextInput(); _userName = null; } else if (_userName != null && _password != null) { DebugTextPrompt("Account Succesfully Created"); ChangePlaceHolderText("Enter Username...","Enter Password..."); ResetTextInput(); Debug.Log($"{_userName},{_password}"); _loginCanvas.SetActive(true); _accountCreationgCanvas.SetActive(false); } }
При создании новой учетной записи пользователь вводит свое имя пользователя и пароль, а затем выбирает «Создать». Затем кнопка «Создать» проверит, не превышает ли имя пользователя четыре символа, и если это не так, то измените текст отладки на ошибку, слишком короткую для имени пользователя, и попросите их повторно ввести новое имя пользователя и пароль. При успешном создании учетной записи мы сохраняем имя пользователя и пароль и возвращаемся к экрану входа в систему.
public void Login() { string tempUsername = _userNameInputField.text; string tempPassword = _passwordInputField.text; if (tempPassword.Equals(_password) && tempUsername.Equals(_userName)) { DebugTextPrompt("Successful Login"); } else { ResetTextInput(); DebugTextPrompt("WRONG USERNAME OR PASSWORD"); } }
При попытке войти в систему они должны ввести правильное имя пользователя и пароль. В противном случае появится ошибка о том, что их логин и пароль не совпадают.
Конечный результат
using TMPro; using UnityEngine; public class UserNamePassword : MonoBehaviour { [SerializeField] TMP_InputField _userNameInputField, _passwordInputField; [SerializeField] GameObject _loginCanvas; [SerializeField] GameObject _accountCreationgCanvas; [SerializeField] TMP_Text _debugText; private string _userName = null; private string _password = null; private void Start() { DebugTextPrompt(""); _accountCreationgCanvas.SetActive(false); } public void CreateAccountButton() { ChangePlaceHolderText("Create Username...", "Create Password..."); _loginCanvas.SetActive(false); _accountCreationgCanvas.SetActive(true); DebugTextPrompt(""); ResetTextInput(); _userName = null; _password = null; } private void ChangePlaceHolderText(string username, string password) { var _userNamePlaceHolder = _userNameInputField.placeholder; var _passwordPlaceHolder = _passwordInputField.placeholder; _userNamePlaceHolder.gameObject.GetComponent<TextMeshProUGUI>().text = username; _passwordPlaceHolder.gameObject.GetComponent<TextMeshProUGUI>().text = password; } private void DebugTextPrompt(string text) { _debugText.text = text; } public void GetUserName() { _userName = _userNameInputField.text; } public void GetPassword() { _password = _passwordInputField.text; } public void Login() { string tempUsername = _userNameInputField.text; string tempPassword = _passwordInputField.text; if (tempPassword.Equals(_password) && tempUsername.Equals(_userName)) { DebugTextPrompt("Successful Login"); } else { ResetTextInput(); DebugTextPrompt("WRONG USERNAME OR PASSWORD"); } } public void ConfirmAccountCreation() { if (_userName.Length < 4) { DebugTextPrompt("Error Username is too short (Greater Than 4 Characters)."); ResetTextInput(); _userName = null; } else if (_userName != null && _password != null) { DebugTextPrompt("Account Succesfully Created"); ChangePlaceHolderText("Enter Username...","Enter Password..."); ResetTextInput(); Debug.Log($"{_userName},{_password}"); _loginCanvas.SetActive(true); _accountCreationgCanvas.SetActive(false); } } public void CancelButton() { ChangePlaceHolderText("Enter Username...", "Enter Password..."); ResetTextInput(); _loginCanvas.SetActive(true); _accountCreationgCanvas.SetActive(false); } private void ResetTextInput() { _userNameInputField.text = ""; _passwordInputField.text = ""; } }