unity 登录与注册界面(连接本地MySQL)实现

unity 登录与注册界面(连接本地MySQL)实现

首先unity连接到本地MySQL

1.先去MySQL下载好插件如下
dada.ll.在这里插入图片描述

  1. 下完后将下面的压缩包解压找到如下组件放到unity新建的文件夹Plugins
    3.在这里插入图片描述
    在这里插入图片描述
  2. 做完后到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;
        //         
        //     }
        // }
    }

猜你喜欢

转载自blog.csdn.net/m0_52608003/article/details/127908508