Unity3D实现MySql数据库登录与注册功能

这篇具有很好参考价值的文章主要介绍了Unity3D实现MySql数据库登录与注册功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、搭建测试界面

1、界面布局如下:
Unity3D实现MySql数据库登录与注册功能
2、界面控件
Unity3D实现MySql数据库登录与注册功能

二、代码实现

1、封装MySql

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient;
using UnityEngine.Events;
using System.Data;
/// <summary>
/// MySql工具类
/// </summary>
public class MySqlTool
{
    /// <summary>
    /// 单例
    /// </summary>
    public static MySqlTool Instance;
    /// <summary>
    /// 路径
    /// </summary>
    public static string conPath = "Database=testdatabase;datasource=localhost;port=3306;user=root;password=123456;";
    /// <summary>
    /// 连接实例
    /// </summary>
    public static MySqlConnection con;
    /// <summary>
    /// 获取MySqlTool工具实例
    /// </summary>
    /// <returns></returns>
    public static MySqlTool GetInstance()
    {
        if(Instance==null)  
            Instance = new MySqlTool();
        return Instance;
    }
    /// <summary>
    /// 初始化时打开数据库
    /// </summary>
    public MySqlTool()
    {
        GetConnect();
    }
    /// <summary>
    /// 获取连接实例
    /// </summary>
    public void GetConnect()
    {
        try
        {
            if(con.State!=ConnectionState.Open)
            {
                con.Open();
            }     
        }
        catch(System.Exception e)
        {
            Debug.Log("服务器打开失败:"+e.Message.ToString());//有错则报出错误
        }    
    }
    /// <summary>
    /// 关闭连接
    /// </summary>
    private void Close()
    {
        if(con!=null)
        {
            con.Close();
        }
    }
    /// <summary>
    /// 获取数据读取实例
    /// </summary>
    public MySqlDataReader GetReader(string tableName)
    {
        GetConnect();
        try
        {
            string selectStatement = "select*from " + tableName;
            MySqlCommand cmd = new MySqlCommand(selectStatement,con);
            MySqlDataReader reader = cmd.ExecuteReader();
            return reader;
        }
        catch (System.Exception e)
        {
            Debug.Log("错误:"+e.Message.ToString());
            return null;
        }   
    }
    /// <summary>
    /// 执行Sql语句
    /// </summary>
    /// <param name="com"></param>
    private void ExecuteSql(string sqlCom)
    {
        GetConnect();
        try
        {
            MySqlCommand cmd = new MySqlCommand(sqlCom,con);
            cmd.ExecuteNonQuery();
        }
        catch (System.Exception e)
        {
            Debug.Log("错误:"+e.Message.ToString());
        }
        finally
        {
            Close();
        }
    }
    /// <summary>
    /// 插入新用户
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="userName">新的用户名</param>
    /// <param name="password">新密码</param>
    public void InsertUser(string tableName,string userName,string password)
    {
        string connstr = "insert into " + tableName + "(userName,password) values ('" + userName + "','" + password + "')";
        ExecuteSql(connstr);
    }
    }

2、编写登录、注册功能脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using MySql.Data.MySqlClient;
/// <summary>
/// 登录注册页
/// </summary>
public class LoginPanel : MonoBehaviour
{
    /// <summary>
    /// 姓名、密码
    /// </summary>
    public InputField nameInput, passwordInput;
    /// <summary>
    /// 登录、注册、确定登录、确定注册
    /// </summary>
    public Button loginBtn, registerBtn, sureLoginBtn, sureRegisterBtn;
    /// <summary>
    /// 用户信息(名字、密码)字典
    /// </summary>
    private Dictionary<string, string> userDic = new Dictionary<string, string>();
    /// <summary>
    /// 数据读取实例
    /// </summary>
    private MySqlDataReader reader;
    void Start()
    {
        //按钮添加监听
        loginBtn.onClick.AddListener(delegate 
        {
            sureLoginBtn.gameObject.SetActive(true);
            sureRegisterBtn.gameObject.SetActive(false);
        });
        registerBtn.onClick.AddListener(delegate 
        {
            sureRegisterBtn.gameObject.SetActive(true);
            sureLoginBtn.gameObject.SetActive(false);
        });
        sureLoginBtn.onClick.AddListener(delegate 
        {
            OnLogin(nameInput.text,passwordInput.text);
        });
        sureRegisterBtn.onClick.AddListener(delegate
        {
            OnRegister(nameInput.text, passwordInput.text);
        });
    }
    /// <summary>
    /// 读取用户表中的数据
    /// </summary>
    private void ReadUserTable()
    {
        userDic.Clear();
        reader = MySqlTool.Instance.GetReader("user");//user为用户表名
        while(reader.Read())
        {
            string userName = reader.GetString("userName");//userName为user表中的姓名字段
            string password = reader.GetString("password");//password为user表中的密码字段
            userDic.Add(userName,password);
        }
        reader.Close();
    }
    /// <summary>
    /// 登录
    /// </summary>
    /// <param name="inputName">输入的用户名</param>
    /// <param name="inputPassword">输入的密码</param>
    private void OnLogin(string inputName,string inputPassword)
    {
        ReadUserTable();
        if(userDic.ContainsKey(inputName))
        {
            string value;
            if(userDic.TryGetValue(inputName,out value))
            {
                      if(value==inputPassword)
                      {
                      Debug.Log("登成功!");
                      }
                
            }
            else
            {
                Debug.Log("密码错误!");
            }
        }
        else
        {
            Debug.Log("用户名不存在!");
        }
    }
    /// <summary>
    /// 注册
    /// </summary>
    /// <param name="inputName">输入的用户名</param>
    /// <param name="inputPassword">输入的密码</param>
    private void OnRegister(string inputName, string inputPassword)
    {
        ReadUserTable();
        if (userDic.ContainsKey(inputName))
        {
            Debug.Log("用户已存在!");
        }
        else
        {
            MySqlTool.GetInstance().InsertUser("user", inputName,inputPassword);
            Debug.Log("用户注册成功!");
        }
    }
}

三、属性映射关系

挂载LoginPanel脚本,并将控件映射到公共属性如下:

Unity3D实现MySql数据库登录与注册功能

四、运行测试

有问题请指出,谢谢!文章来源地址https://www.toymoban.com/news/detail-513021.html

到了这里,关于Unity3D实现MySql数据库登录与注册功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【unity3D】退出游戏功能的实现

    💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的退出游戏功能的实现 新建一个button按钮,在Hierachy面板点击右键,然后UI—Button。 调节Button位置和Button下面Text文本的内容和大小。 新建一个脚本 新建一个空物体,然后

    2024年02月11日
    浏览(69)
  • 【Unity3D】实现UI点击事件穿透

              注意:EventSystem.current.RaycastAll获取到的对象列表是能够接受事件的,假如你的按钮Button自己身上没有Image,而是Button的子物体有,那么你就要给这个子物体也加上标签Tag才能响应到。 如果ExecuteEvents.Execute不管用,可以试试ExecuteEvents.ExecuteHierarchy

    2024年02月04日
    浏览(55)
  • Unity3D实现登陆注册功能,实现本地存储读取

    untiy登录注册功能的实现,可以永久本地存储。C#源代码,也可以用相同的办法存储读取玩家的其他信息或自定义的游戏设置 实现了判断用户名是否存在,密码是否前后一致,密码是否正确等。 这是注册界面功能 以下是登录页功能      

    2024年02月13日
    浏览(48)
  • unity3D 鼠标滚轮实现物体的大小缩放

    鼠标滚轮响应函数是Input.GetAxis(\\\"Mouse ScrollWheel\\\"),函数返回值类型是float,向前滚是返回正数,向后滚是返回负数,且鼠标滚轮滑动单次函数返回值为0.1 利用返回值修改模型transform.localscale,实现模型缩放 鼠标滚轮一直向后滚,会看见模型逐渐变小,当变到很小到消失的时候,

    2024年02月08日
    浏览(81)
  • Unity3D实现键盘控制小车左右方向旋转

    注:本文章是在已学课程的基础上实现的标题效果! 以下是学习控制物体旋转的简单方法: 代码在updata()函数中实现;  transform:指本脚所挂载的物体的位置信息,包含Position(位置)、Rotation(旋转)、Scale(缩放),此处通过\\\".\\\"来调用Rotate方法; Rotate:unity手册中描述如下,参数一:

    2024年01月18日
    浏览(59)
  • 【Unity3D】如何用使用Unity实现退出游戏的功能

    1、使用Unity编译器时: 2、打包后: 很多时候,我们都知道Application.Quit()代码,但是我们在Unity编译器调试的时候发现即使挂上了这个代码的组件或物体都无法退出编译,因为该代码只在打包后可以实现退出功能。 所以我们可以把两个实现代码同时写入脚本,这样既可以在编

    2024年02月11日
    浏览(79)
  • 【Unity3D】UI Toolkit数据动态绑定

            本文将实现 cvs 表格数据与 UI Toolkit 元素的动态绑定。         如果读者对 UI Toolkit 不是太了解,可以参考以下内容。 UI Toolkit简介 UI Toolkit容器 UI Toolkit元素 UI Toolkit样式选择器 UI Toolkit自定义元素         本文完整资源见→UI Toolkit数据动态绑定。 2.1 UI 搭建

    2024年02月08日
    浏览(58)
  • 以unity3d为例解读:游戏数据加密

    目录 前言 1、Virbox 一、Virbox 是怎么做的? 1、如何对程序进行保护? 2、如何对资源进行保护? 3、使用加密工具前后比较 二、Virbox 保护方案特点 l 更安全 l 更全面 l 更简单 2、DES和RSA加密算法 一、DES加密算法 二、RSA加密算法 RSA加密算法的基本流程如下: 网络游戏数据文

    2024年02月02日
    浏览(81)
  • unity3d 制作开门动画以及收集钥匙实现开门

    首先展示效果: unity3d 制作开门动画以及收集钥匙实现开门 第一步,我们在Hirarchy面板上新建三个cube,再按照一定的比例调整,制作完成一个门框,然后制作一个空物体并命名为Doorframe,将三个cube合并成门框一个整体:  然后再创建一个cube调整大小,在将合适的门移动至门框

    2023年04月13日
    浏览(55)
  • 在Android中Unity3D透明背景的实现

    在Unity中,可以通过Window-Rendering-lighting-在属性面板中选择Environment,修改 Skybox Material 为 None 来去掉天空盒。 但去掉天空盒的效果是这样的: 这样的效果明显不是预期的效果。 去掉天空盒并不代表背景被透明,还需要设置Camera的背景。 需要设置黑色透明度0,即ARGB为(0,

    2023年04月08日
    浏览(92)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包