C# - 使用未赋值的局部变量
本文关键字:赋值 局部变量 | 更新日期: 2023-09-27 18:35:01
我正在为 Unity 制作一个帐户系统,这是我的脚本,我在文本字段和密码字段之前的第 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 = "";
}
}
}
}
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, '*');
在这里,您使用的是newUsername
、newPassword
和conPassword
,而不对它们应用任何值。您需要为它们分配一个字符串值before
将它们作为参数传递。
或者,您可以像这样声明它们:
string newUsername = "";
string newPassword = "";
string conPassword = "";
我怀疑你的问题如下:
newUsername = GUI.TextField(new Rect(100, 10, 100, 30), newUsername);
在为函数赋值之前,您将 newUsername 用作函数的参数。 当然,它之后会有一个价值,但它不能走那么远。
当然,你使用不同的变量这样做了三次。