Задача: разработать простую сцену с именем пользователя и паролем. Использование инструментов, предоставляемых 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 = "";
    }
}