2013-10-10 62 views
0

我做了統一的賬戶體系,這是我的腳本使用,我得到的線132,134,136的TextField和PasswordFields之前的錯誤。我不知道它有什麼問題。任何幫助將不勝感激。C# - 未分配的局部變量

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

請注意,我們看不到任何行號。 – BlackVegetable

+1

請僅顯示錯誤所在的行或函數。 – Nabren

回答

0
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, '*'); 

這裏使用的是newUsernamenewPasswordconPassword不應用任何價值給他們。您需要爲它們分配一個字符串值before將它們作爲參數傳遞。

或者,你可以聲明它們像這樣:

string newUsername = ""; 
string newPassword = ""; 
string conPassword = ""; 
+0

非常感謝,現在可以使用。 –

+0

沒問題,很樂意幫忙。 – Paddyd

0

我懷疑你的問題如下:

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

您使用newUsername作爲參數傳遞給一個函數已分配的任何值之前。當然,它會有一個值後,但它不能達到那麼遠。

你,當然,不同的變量做了三次。