Question

I'm making an account system for Unity and this is my script, I get the error on lines 132, 134, 136 before the TextField and PasswordFields. I can't tell what's wrong with it. Any help would be greatly appreciated.

using UnityEngine;
using System.Collections;

public class menuManager : MonoBehaviour {

    public string currentMenu;

    public string Username;
    public string Password;

    private string userTre = "holybuttwipe";
    private string passTre = "tre";

    private string userDerek = "Prouda You";
    private string passDerek = "derek";

    private string userBodey = "cherrypepsi72";
    private string passBodey = "bodey";

    private string userCody = "Bear On The Moon";
    private string passCody = "cody";

    private bool tre = false;
    private bool derek = false;
    private bool bodey = false;
    private bool cody = false;



    void Start() {
        currentMenu = "Main";
    }

    void Update() {

    }

    void OnGUI() {
        if(currentMenu == "Main")
            Menu_Main();
        if(currentMenu == "Login")
            Menu_Login();
        if(currentMenu == "Game")
            Menu_Game();
        if(currentMenu == "Create")
            Menu_Create();
        GUI.Label(new Rect(100, 100, 100, 100), Username);
    }

    public void NavigateTo(string nextmenu) {
        currentMenu = nextmenu;
    }

    public void Menu_Main() {
        if(GUI.Button(new Rect(10, 10, 300, 50), "Login")) {
            NavigateTo("Login");
        }
        if(GUI.Button(new Rect(10, 60, 300, 50), "Create Account")) {
            NavigateTo("Create");
        }
    }

    public void Menu_Login() {
        GUI.Label(new Rect(10, 10, 100, 30), "Username");
        Username = GUI.TextField(new Rect(110, 10, 100, 30), Username);
        GUI.Label(new Rect(10, 50, 100, 30), "Username");
        Password = GUI.PasswordField(new Rect(110, 50, 100, 30), Password, '*');
        if(GUI.Button(new Rect(10, 85, 210, 30), "Login")) {
            if(Username == userTre) {
                if(Password == passTre) {
                    NavigateTo("Game");
                    tre = true;
                }
                else {
                    Username = "";
                    Password = "";
                }
            }
            else if(Username == userDerek) {
                if(Password == passDerek) {
                    NavigateTo("Game");
                    derek = true;
                }
                else {
                    Username = "";
                    Password = "";
                }
            }
            else if(Username == userBodey) {
                if(Password == passBodey) {
                    NavigateTo("Game");
                    bodey = true;
                }
                else {
                    Username = "";
                    Password = "";
                }
            }
            else if(Username == userCody) {
                if(Password == passCody) {
                    NavigateTo("Game");
                    cody = true;
                }
                else {
                    Username = "";
                    Password = "";
                }
            }
            else {
                Username = "";
                Password = "";
            }
        }
    }

    public void Menu_Game() {
        GUI.Label(new Rect(10, 10, 300, 30), "You are logged in as " + Username);
        if(GUI.Button(new Rect(10, 50, 300, 50), "Logout")) {
            NavigateTo("Main");
            tre = false;
            derek = false;
            bodey = false;
            cody = false;
        }
    }

    public void Menu_Create() {
        string newUsername;
        string newPassword;
        string conPassword;
        GUI.Label(new Rect(10, 10, 100, 30), "Username");
        newUsername = GUI.TextField(new Rect(100, 10, 100, 30), newUsername);
        GUI.Label(new Rect(10, 50, 100, 30), "Password");
        newPassword = GUI.PasswordField(new Rect(100, 50, 100, 30), newPassword, '*');
        GUI.Label(new Rect(10, 90, 100, 30), "Confirm Password");
        conPassword = GUI.PasswordField(new Rect(100, 90, 100, 30), conPassword, '*');
        if(GUI.Button(new Rect(10, 130, 200, 30), "Create Account")) {
            if(newPassword == conPassword && newUsername != userTre && newUsername != userDerek && newUsername != userBodey && newUsername != userCody) {
                Username = newUsername;
                Password = newPassword;
                NavigateTo("Login");
            }
            else {
                newUsername = "";
                newPassword = "";
                conPassword = "";
            }
        }
    }
}
Was it helpful?

Solution

newUsername = GUI.TextField(new Rect(100, 10, 100, 30), newUsername);

newPassword = GUI.PasswordField(new Rect(100, 50, 100, 30), newPassword, '*');

conPassword = GUI.PasswordField(new Rect(100, 90, 100, 30), conPassword, '*');

Here you are using newUsername, newPassword and conPassword without applying any value to them. You need to assign a string value to them before passing them as parameters.

Alternatively you could declare them like so :

string newUsername = "";
string newPassword = "";
string conPassword = "";

OTHER TIPS

I suspect your problem is the following:

newUsername = GUI.TextField(new Rect(100, 10, 100, 30), newUsername);

You are using newUsername as a parameter to a function before it has been assigned any value. Sure, it will have a value AFTERWARD but it cannot get that far.

You are, of course, doing this three times with different variables.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top