unity链接MySQL数据库,并实现游戏数据的存储和读取。(一)

您所在的位置:网站首页 oracle10g连接数据库 unity链接MySQL数据库,并实现游戏数据的存储和读取。(一)

unity链接MySQL数据库,并实现游戏数据的存储和读取。(一)

2023-03-03 05:55| 来源: 网络整理| 查看: 265

先说明一下,本次测试中MySQL是安装在本机上的,如果你要想实现在任何地方访问你的数据库建议使用阿里云的RDS云数据库,你需要注册一个阿里云的账号,然后购买实例等等,这些购买实例、创建白名单、创建数据库、创建账号等在阿里云的帮助文档里都写的很详细了,翻一下看看,在这就不一一赘述了。

如果你只是作为个人测试使用,也可以不用花钱买,毕竟很贵。那你就直接将MySQL安装到你的电脑上即可,

为了大部分人的需求,下面会分别介绍使用阿里云RDS云数据库的情况下与unity进行链接直接将MySQL装到本机的情况下与unity链接

当你的这些工作准备好后,下载个workbench,当然,你用别的连接数据库软件也可以,这里选择workbench。

一、版本说明:

unity版本:2020.1.8 f1c1

visual studio版本:2017版

MySQL版本:不管使不使用RDS,MySQL版本都可以安装最新版的。

MySQL与C#链接使用的动态链接库MySQL.Data.dll版本:connector/net 5.2.0(要想与C#进行链接,必须要有这个库,而且这个版本不要太高)

本次任务要做一个简单的登入、注册界面。要求:实现当点击登入按钮时,判断用户是否已经存在,如果存在就直接登入,并加载这个用户的数据;如果不存在提示登入失败。当点击注册按钮时会判断用户是否已经存在,如果已经存在,提示注册失败,用户名已经存在,如果用户不存在,提示注册成功。当用户登入成功后,加载游戏场景,在游戏场景中可以实现点击空格键方块改变颜色,同时分数加一。

开始:

搭建UI界面,这里就不说了,直接上图

username和password是两个inputfield。用户名和密码是那两个提示文字。注册和登录是两个按钮。game_evn是登入成功后要加载的游戏场景。

游戏场景:

Game_evn目录:

player是方块,score是左上角的分数,是个text。save是右下角的保存按钮。

MySQL下载:

到这个页面下下载MySQL Community Server 最新版本和Connector/Net 5.2版本,其他版本不知可以不,反正这两个版本是我使用过的,可以。MySQL的安装如果不会可以百度,这里就不跑题了。

安装好后,workbench也会自动安装下来。

1、将MySQL直接安装到本机的情况下与unity进行链接,实现上述要求:

打开workbench新建一个连接。

因为你的mysql是在你本机上,所以这里的Hostname是表示的是你本机的地址,写你本机的IP地址也可以。

然后用户名(默认是root)填好后点击test connection,输入你的mysql密码,就可以连接上了。

连接好后新建一个数据库命名为mydatabase,然后在这个数据库下新建个表,命名为mytable,然后根据需要建几个字段,根据上面的任务我需要建立一个ID字段、user_name字段、user_password字段,score字段,r、g、b用来存储方块颜色的字段。

MySQL这边准备好后,我们需要到刚刚下载的connecto/Net文件中找到MySQL.Data.dll文件,在unity中新建一个Plugins文件夹将其放入。最后要导出exe文件还需要到unity的安装目录下分别找到I18N.dll、I18N.West.dll、System.Data.dll、System.Drawing.dll并将它们放到Plugins文件夹下

OK!一切准备好后,我们就开始写代码了!!!

unity下建立一个名为Connect_Mysql的脚本,不需要继承MonoBehaviour类。这个脚本用来写与数据库链接、查询、更改、删除插入的方法。

1、我们先来写点击登录按钮时的操作,当点击登录按钮时会先进行数据库链接,链接成功后进行用户名和密码的查询,看一下此用户是否已经存在,如果存在就提示登录成功,如果不存在,提示用户不存在,请注册。

public bool login_success = false; public bool register_success = false; public int score; public float r; public float g; public float b;

//点击登录按钮 public void Click_login(string username, string password) { //string sqlSer = "server = localhost;port = 3306;database = mydatabase;user = root;password = root123;"; string sqlSer = "server = 你的阿里云RDS云数据库链接的外网地址 " + "port = 3306;" + "database = mydatabase;" + "user = user_1;" + "password = sdivc2020;"; MySqlConnection conn = new MySqlConnection(sqlSer); try { conn.Open(); Debug.Log("------链接成功------"); string sqlQuary = "select * from mytable where user_name =@paral1 and user_password = @paral2"; MySqlCommand comd = new MySqlCommand(sqlQuary, conn); comd.Parameters.AddWithValue("paral1", username); comd.Parameters.AddWithValue("paral2", password); MySqlDataReader reader = comd.ExecuteReader(); if (reader.Read()) { Debug.Log("------用户存在,登录成功!------"); //进行登入成功后的操作,例如进入新场景。。。 login_success = true; } else { Debug.Log("------用户不存在,请注册。或请检查用户名或和密码!------"); login_success = false; } } catch (System.Exception e) { Debug.Log(e.Message); } finally { conn.Close(); } }

注释的部分是直接在本机上运行MySQL时应该写的链接语句。下面的server写的是我阿里云RDS云数据库链接的外网地址,port写端口号,MySQL默认都是3306,database写你自己建立的数据库名称,user写你的用户名(MySQL在本机的朋友大部分默认都是root,MySQL在阿里云RDS云服务器上的,可以看一下账号管理中的用户名,这是你在创建用户的时候自己写的),password写你设置的密码。

这个外网地址你可以去阿里云购买相关实例,然后配置一下就可以得到了,具体操作步骤可以看阿里云RDS帮助文档。

云数据库 RDS-阿里云

2、我们再来写点击注册按钮时的操作,当点击注册按钮时先进行与数据库的链接,链接成功打印链接成功,然后进行用户名和密码的查询,看一下你输入要注册的用户名是否已经存在,如果用户名已经存在,打印用户名已存在,请重新输入!,如果输入的要注册的用户名不存在,那么就讲用户名和密码插入到数据库中,并打印注册成功!

//点击注册按钮时 public void Click_register(string username, string password) { string sqlSer = "server = 你的阿里云RDS云数据库链接的外网地址; " + "port = 3306;" + "database = mydatabase;" + "user = user_1;" + "password = sdivc2020;"; MySqlConnection conn = new MySqlConnection(sqlSer); try { conn.Open(); Debug.Log("-----连接成功!------"); string sqlQuary = "select * from mytable where user_name =@paral1 and user_password = @paral2"; MySqlCommand comd = new MySqlCommand(sqlQuary, conn); comd.Parameters.AddWithValue("paral1", username); comd.Parameters.AddWithValue("paral2", password); MySqlDataReader reader = comd.ExecuteReader(); if (reader.Read()) { Debug.Log("-----用户名已存在,请重新输!------"); register_success = false; } else { Insert_User(username, password); Debug.Log("------注册成功,请进行登入------"); register_success = true; } } catch (System.Exception e) { Debug.Log(e.Message); } finally { conn.Close(); } } //插入用户 private void Insert_User(string username,string password) { string sqlSer = "server = 你的阿里云RDS云数据库链接的外网地址; " + "port = 3306;" + "database = mydatabase;" + "user = user_1;" + "password = sdivc2020;"; MySqlConnection conn = new MySqlConnection(sqlSer); try { conn.Open(); string sqlInsert = "insert into mytable(user_name,user_password) values('" + username + "','" + password + "')"; MySqlCommand comd2 = new MySqlCommand(sqlInsert, conn); int resule = comd2.ExecuteNonQuery(); } catch (System.Exception e) { Debug.Log(e.Message); } finally { conn.Close(); } }

还是,如果你的MySQL在你的本机,你应该在server中写上localhost或写127.0.0.1。

OK,写完后你就可以进行链接测试了,点击unity的运行,输入一个我的数据库中不存的账号和密码,点击登入按钮我们来看一下结果。

现在我们点击注册按钮再来看一下结果

然后我们到数据库中刷新一下看看这个用户名和密码是否已经添加进去了。

可以看到id = 11的那条记录就是我们刚刚添加进去的。

好了,到此我们已经成功实现了要求中的大部分任务。

下一篇我们就开始写存放于读取游戏在操作过程中的数据了,(score、r、g、b)

下一篇:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3