unity 登入与注册界面(连接本地MySQL)实现
unity 登录与注册界面(连接本地MySQL)实现
首先unity连接到本地MySQL
1.先去MySQL下载好插件如下
dada.ll.
- 下完后将下面的压缩包解压找到如下组件放到unity新建的文件夹Plugins
3.
- 做完后到MySQL创建一个数据库和表格如下
接下来搭建场景如下我用image做的注册和登入界面
记得加一个文本作为提示文本
写入代码挂在canvas上记得最后将两个组件托进去先给主代码
using MySql.Data.MySqlClient;
using System.Collections;
using System.Collections.Generic;
using System.Data.Common;
using UnityEngine;
using UnityEngine.UI;
using LitJson;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine.SceneManagement;
public class Account : MonoBehaviour
{
//注册界面
public GameObject registerbg;
private InputField regisUsername;
private InputField repassword;
private Text hinttext1;
//登入界面
public GameObject singbg;
private InputField UsernameInput;
private InputField Password;
private Text hinttext;//提示文本
private string Password1;
private string username;
private void Awake()
{
//获取登入界面输入组件
UsernameInput = singbg.transform.Find("loginbg/ACCount/UsernameInput").GetComponent<InputField>();
Password = singbg.transform.Find("loginbg/Password/PasswordInput").GetComponent<InputField>();
//提示文本
hinttext = singbg.transform.Find("hint").GetComponent<Text>();
hinttext1= registerbg.transform.Find("hint1").GetComponent<Text>();
//获取注册界面输入组件
regisUsername = registerbg.transform.Find("loginbg/ACCount/UsernameInput").GetComponent<InputField>();
repassword= registerbg.transform.Find("loginbg/Password/PasswordInput").GetComponent<InputField>();
}
void Start()
{
}
//注册界面方法查找及注册方法
private void regions(string[] str)
{
//将读取数据库的账号密码存入字典里面
Dictionary<string, string> myDic = new Dictionary<string, string>();
myDic.Clear();
//连接数据库
string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=scyscy111;";
//定义数据库连接对象,传递对象
MySqlConnection conn = new MySqlConnection(connectStr); //并没有建立数据库连接
//打开数据库
conn.Open();
//数据库连接成功
Debug.Log("数据库" + "mygamedb" + "连接成功");
//执行Mysql语句并读取结果
MySqlCommand myCommand = new MySqlCommand("select*from users", conn);
MySqlDataReader reader = myCommand.ExecuteReader();
//读取具体数据
while (reader.Read())
{
string username = reader.GetString("username");
string Password1 = reader.GetString("password");
myDic.Add(username,Password1);
}
if (myDic.ContainsKey(str[0]))
{
hinttext1.text = "账号存在!请重新注册";
}
else
{
reader.Close();
string strinsert="insert into users (username,password)values('"+str[0].ToString()+"','"+str[1].ToString()+"')";
MySqlCommand cmd = new MySqlCommand(strinsert, conn);
cmd.ExecuteNonQuery();
hinttext1.text = "注册成功!";
conn.Close();
}
}
//登录界面方法查找是否存在
private void Login(string[] str)
{
//将读取数据库的账号密码存入字典里面
Dictionary<string, string> myDic = new Dictionary<string, string>();
myDic.Clear();
//连接数据库
string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=scyscy111;";
//定义数据库连接对象,传递对象
MySqlConnection conn = new MySqlConnection(connectStr); //并没有建立数据库连接
//打开数据库
conn.Open();
//数据库连接成功
Debug.Log("数据库" + "mygamedb" + "连接成功");
//执行Mysql语句并读取结果
MySqlCommand myCommand = new MySqlCommand("select*from users", conn);
MySqlDataReader reader = myCommand.ExecuteReader();
//读取具体数据
while (reader.Read())
{
string username = reader.GetString("username");
string Password1 = reader.GetString("password");
myDic.Add(username,Password1);
}
if (myDic.ContainsKey(str[0]))
{
string vale;
if (myDic.TryGetValue(str[0], out vale))
{
if (vale==str[1])
{
hinttext.text = "登入成功!";
SceneManager.LoadScene("Game");//跳转至主游戏界面自己新建一个游戏场景
}
else
{
hinttext.text = "密码错误请重新输入!";
//最好可以写一个清空账号的功能
}
}
}
else
{
hinttext.text = "账号不存在!请注册";
}
//关闭读取和连接数据库
reader.Close();
conn.Close();
//下面是单实现账号
// foreach (var item in user)
// {
// if (pass.Contains(str[0]) )
// {
// SceneManager.LoadScene("Game");
//
// break;
// }
// else
// { reader.Close();
//
// hinttext.text = "未找到账号请注册";
//
// break;
//
// }
// }
}
//每一次返回的清空
private void emptytex()
{
regisUsername.text = "";
repassword.text = "";
UsernameInput.text = "";
Password.text = "";
hinttext.text = "";
hinttext1.text = "";
}
//组件直接的查询
private void OnEnable()
{
//登入界面的代码实现
List<Button> signButtonList = new List<Button>();//创建一个按钮的数列
signButtonList.AddRange(singbg.GetComponentsInChildren<Button>());
foreach (Button button1 in signButtonList)
{
button1.onClick.AddListener(() =>
{
LoginWindowButtonClick(button1);
});
}
//注册界面实现
List<Button> reButtonList = new List<Button>();
reButtonList.AddRange(registerbg.GetComponentsInChildren<Button>());
foreach (Button button2 in reButtonList)
{
button2.onClick.AddListener(() =>
{
LoginWindowButtonClick(button2);
});
}
}
//模式管理场景的按钮点击事件
private void LoginWindowButtonClick(Button sender)
{
switch (sender.name)
{
//注册界面注册按钮
case "Rebutton":
{
Debug.Log("ok");
username = regisUsername.text.Trim();
Password1 = repassword.text.Trim();
if (username == ""&& Password1=="")
{
hinttext1.text="用户的账号密码不能为空";
}
else
{
regions(new string[] {
username, Password1});//调用数据库的方法
}
} break;
case "Back1":
{
singbg.SetActive(true);
registerbg.SetActive(false);
emptytex();
}
break;
//登入界面登入按钮
case "siginbutton":
{
singbg.SetActive(false);
registerbg.SetActive(true);
}break;
case "logbutten":
{
Debug.Log("成功");
username = UsernameInput.text.Trim();
Password1 = Password.text.Trim();
if (UsernameInput.text.Trim() == ""&&Password.text.Trim()=="")
{
hinttext.text="用户的账号密码不能为空,请注册";
}
else
{
Login(new string[] {
username, Password1 });//调用数据库方法
}
}
break;
default:
break;
}
}
}
单独提出来登入注册方法
不想写了看看能不能看懂不能留言下
void Start()
{
}
//注册界面方法查找及注册方法
private void regions(string[] str)
{
//将读取数据库的账号密码存入字典里面
Dictionary<string, string> myDic = new Dictionary<string, string>();
myDic.Clear();
//连接数据库
string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=scyscy111;";
//定义数据库连接对象,传递对象
MySqlConnection conn = new MySqlConnection(connectStr); //并没有建立数据库连接
//打开数据库
conn.Open();
//数据库连接成功
Debug.Log("数据库" + "mygamedb" + "连接成功");
//执行Mysql语句并读取结果
MySqlCommand myCommand = new MySqlCommand("select*from users", conn);
MySqlDataReader reader = myCommand.ExecuteReader();
//读取具体数据
while (reader.Read())
{
string username = reader.GetString("username");
string Password1 = reader.GetString("password");
myDic.Add(username,Password1);
}
if (myDic.ContainsKey(str[0]))
{
hinttext1.text = "账号存在!请重新注册";
}
else
{
reader.Close();
string strinsert="insert into users (username,password)values('"+str[0].ToString()+"','"+str[1].ToString()+"')";
MySqlCommand cmd = new MySqlCommand(strinsert, conn);
cmd.ExecuteNonQuery();
hinttext1.text = "注册成功!";
conn.Close();
}
}
//登录界面方法查找是否存在
private void Login(string[] str)
{
//将读取数据库的账号密码存入字典里面
Dictionary<string, string> myDic = new Dictionary<string, string>();
myDic.Clear();
//连接数据库
string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=scyscy111;";
//定义数据库连接对象,传递对象
MySqlConnection conn = new MySqlConnection(connectStr); //并没有建立数据库连接
//打开数据库
conn.Open();
//数据库连接成功
Debug.Log("数据库" + "mygamedb" + "连接成功");
//执行Mysql语句并读取结果
MySqlCommand myCommand = new MySqlCommand("select*from users", conn);
MySqlDataReader reader = myCommand.ExecuteReader();
//读取具体数据
while (reader.Read())
{
string username = reader.GetString("username");
string Password1 = reader.GetString("password");
myDic.Add(username,Password1);
}
if (myDic.ContainsKey(str[0]))
{
string vale;
if (myDic.TryGetValue(str[0], out vale))
{
if (vale==str[1])
{
hinttext.text = "登入成功!";
SceneManager.LoadScene("Game");//跳转至主游戏界面自己新建一个游戏场景
}
else
{
hinttext.text = "密码错误请重新输入!";
//最好可以写一个清空账号的功能
}
}
}
else
{
hinttext.text = "账号不存在!请注册";
}
//关闭读取和连接数据库
reader.Close();
conn.Close();
//下面是单实现账号
// foreach (var item in user)
// {
// if (pass.Contains(str[0]) )
// {
// SceneManager.LoadScene("Game");
//
// break;
// }
// else
// { reader.Close();
//
// hinttext.text = "未找到账号请注册";
//
// break;
//
// }
// }
}