0

Unity 用のアカウント システムを作成しています。これが私のスクリプトです。TextField と PasswordFields の前の 132、134、136 行でエラーが発生します。何が悪いのかわかりません。どんな助けでも大歓迎です。

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 = "";
            }
        }
    }
}
4

2 に答える 2

0

あなたの問題は次のとおりだと思います:

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

値が割り当てられる前に、newUsername を関数のパラメーターとして使用しています。確かに、それは後で値を持ちますが、そこまで到達することはできません.

もちろん、これを異なる変数で 3 回行っています。

于 2013-10-10T16:15:49.423 に答える