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;
        //         
        //     }
        // }
    }
  • 5
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Unity连接MySQL数据库实现登录注册功能,需要遵循以下步骤: 1. 安装MySQL Connector/NET:在Unity项目中连接MySQL数据库,需要安装MySQL Connector/NET。可以从MySQL官网下载适合您的操作系统和Unity版本的Connector/NET。 2. 创建数据库和表:在MySQL中创建一个数据库,然后创建一个表,用于存储用户信息,包括用户名和密码。 3. 编写C#代码:在Unity中编写C#代码来连接数据库和执行查询。 下面是一个示例代码,用于实现登录注册功能: ```csharp using UnityEngine; using System.Collections; using System.Data; using System.Data.SqlClient; public class DBManager : MonoBehaviour { private static string connectionString = "Server=your_server;Database=your_database;Uid=your_username;Pwd=your_password;"; private static SqlConnection connection = new SqlConnection(connectionString); public static bool Login(string username, string password) { connection.Open(); SqlCommand command = new SqlCommand("SELECT * FROM users WHERE username=@username AND password=@password", connection); command.Parameters.AddWithValue("@username", username); command.Parameters.AddWithValue("@password", password); SqlDataReader reader = command.ExecuteReader(); bool success = reader.HasRows; reader.Close(); connection.Close(); return success; } public static bool Register(string username, string password) { connection.Open(); SqlCommand command = new SqlCommand("INSERT INTO users (username, password) VALUES (@username, @password)", connection); command.Parameters.AddWithValue("@username", username); command.Parameters.AddWithValue("@password", password); int rowsAffected = command.ExecuteNonQuery(); connection.Close(); return rowsAffected == 1; } } ``` 这个示例代码包含两个方法:Login和Register。Login方法接收一个用户名和密码并在数据库中查找匹配的记录。如果找到了匹配的记录,则返回true,否则返回false。Register方法接收一个用户名和密码并将其插入到数据库中。如果插入成功,则返回true,否则返回false。 请注意,这只是一个示例代码,并且需要根据您的数据库结构进行修改。另外,为了安全起见,密码应该使用哈希函数进行加密,而不是明文存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值