先用一个结构体,用来获取打上账号密码的文本
[System.Serializable]
public struct AccountMessageText
{
public Text account;
public Text password;
}
public class AccountSystem : MonoBehaviour
{
//用来提示的显示文本,比如账号密码错误
public Text tip_Text;
//两个关于注册登录打字的Text,为啥要用数组,因为懒,注册和登录的文本直接用0和1
public AccountMessageText[] AccountMessageText;
private static AccountSystem instance_;
public static AccountSystem Instance { get { return instance_; } }
//登录成功后跳转的场景名称
public string sceneName;
//登录按钮
public Button Login_Btn;
//注册按钮
public Button Register_Btn;
//注册面板
public GameObject RegisterPlane;
public void Awake()
{
//单例,不过好像也不太需要
if (instance_ == null)
{
instance_ = this;
//防止销毁
}
//按下登录按钮,和按下注册按钮
Login_Btn.onClick.AddListener(() => LoginButton(0));
Register_Btn.onClick.AddListener(() => RegisterButton(1));
}
public void LoginButton(int value)
{
Login(AccountMessageText[value].account.text, AccountMessageText[value].password.text);
}
public void RegisterButton(int value)
{
Register(AccountMessageText[value].account.text, AccountMessageText[value].password.text);
}
//登录
public void Login(string account, string password)
{
//如果输入进来的账号,从PlayerPrefs获取后不等于输入的密码
if (PlayerPrefs.GetString(account) != password)
{
//显示账号密码错误
tip_Text.text = "账号或密码错误";
}
else if (account == "" || password == "")
{
tip_Text.text = "账号不能为空";
}
else
{
//这个是IDSystem可以忽略我用来每个场景可以让脚本获取当前账号id用的
//IDSystem.instance.id = account;
SceneManager.LoadScene(sceneName);
}
}
//注册
public void Register(string account, string password)
{
if (account == "" || password == "")
{
tip_Text.text = "账号密码不能为空";
}
else if (PlayerPrefs.GetString(account) == "")
{
PlayerPrefs.SetString(account, password);
tip_Text.text = "注冊成功";
RegisterPlane.SetActive(false);
}
else
{
tip_Text.text = "该账号已注册";
}
}