确保这两个软件都能够在你的计算机上良好地运行。
这里选择msi文件安装,会安装到C盘且没有路径选择。但是其安装的图形化界面可更新MySQL和其他数据库驱动到最新版本。
镜像地址:http://mirrors.sohu.com/mysql/MySQL-8.0/
下载完成后双击运行msi文件。
Next→
Next→
选择自定义安装,
Next→
选择安装路径,
Next→
Install安装,
安装完成,Finish。
此电脑→计算机→属性,
关于→高级系统设置,
高级→环境变量,
系统变量→双击Path,
新建→输入mysql安装目录\bin,
确定→确定→确定。
现在如果使用以下命令连接数据库,会出现错误。
mysql -uroot -p
使用以下命令安装MySQL服务。
mysqld -install
搜索“计算机管理”,
服务和应用程序→服务→MySQL→启动,
遇到如下问题:
找到 MySQL 的安装路径,看看有没有data文件夹,如果没有data文件夹,自己重新建一个;如果有的话,就把里面的内容全部清空,但保留该目录。
到安装路径下的bin路径下,使用如下命令初始化MySQL,并静待一段时间。
mysqld --initialize
接着,输入如下命令启动MySQL:
net start mysql
由于安装时没有设置密码,因此需要修改root密码。
net stop mysql
mysqld --console --skip-grant-tables --shared-memory
mysql
mysql> use mysql
先将密码设置为空,刷新权限:update mysql.user set authentication_string="" where user="root";
flush privileges;
再修改密码为123456,更新刷新权限后退出mysql:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
quit
net start mysql
mysql -u root -p
打开Navicat软件,连接→MySQL…,
输入连接名和密码,
右键新建数据库,
填写数据库名,选择字符集与排序规则,
确定,新建数据库。
打开unitygame数据库,表→新建表,
点击添加字段,编辑表的各项字段和数据类型,
Ctrl+S保存该数据表,输入表名,
两个输入框分别输入用户名和密码,两个按钮分别实现注册和登录。
Unity中新建一个DatabaseManager脚本,双击打开该脚本。
写入代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using MySql.Data.MySqlClient;
public class DatabaseManager : MonoBehaviour
{
private MySqlConnection connection;
private string serverName = "localhost";
private string dbName = "UnityGame"; //数据库名
private string userName = "root"; //登录数据库的用户名
private string password = "123456"; //登录数据库的密码
private string port = "3306"; //MySQL服务的端口号
public InputField InputUsername;
public InputField InputPassword;
void Start()
{
string connectionString = "Server=" + serverName + ";Database=" + dbName + ";Uid=" + userName
+ ";Pwd=" + password + ";Port=" + port + ";";
connection = new MySqlConnection(connectionString);
connection.Open();
Debug.Log("连接数据库成功");
}
// 注册
public void Register()
{
string username = InputUsername.text;
string password = InputPassword.text;
string query = "INSERT INTO usersinfo(username, password) VALUES (@username, @password)";
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.Parameters.AddWithValue("@username", username);
cmd.Parameters.AddWithValue("@password", password);
int rowsAffected = cmd.ExecuteNonQuery();
if (rowsAffected > 0)
{
Debug.Log("注册成功!");
}
else
{
Debug.Log("注册失败!");
}
}
// 登录
public void Login()
{
string username = InputUsername.text;
string password = InputPassword.text;
string query = "SELECT COUNT(*) FROM usersinfo WHERE username=@username AND password=@password";
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.Parameters.AddWithValue("@username", username);
cmd.Parameters.AddWithValue("@password", password);
object result = cmd.ExecuteScalar();
int count = Convert.ToInt32(result);
if(count > 0)
{
Debug.Log("登录成功");
}
else
{
Debug.Log("登录失败");
}
}
}
该脚本定义了一个DatabaseManager类,在Start方法中创建了一个与数据库的连接,并提供了注册(Register)和登录(Login)方法。这些方法使用MySQL的参数化查询来保护用户的数据免受SQL注入攻击。登录方法使用ExecuteScalar()方法来检查用户名和密码是否匹配并返回一个整数结果。
初次使用MySqlConnection会报找不到,这时需要引用MySql.Data.dll。
首先,确定MySQL版本为8.0.27,去官网此处下载MySQL Connector/NET,注意由于版本兼容问题,下载6.3.9版本:
下载完成后,双击安装:
Next→
Typical(默认安装在C盘的MySQL下,可以选择Custom自定义安装选择安装路径)→Next→
Install→
Finish完成安装。
接着,在Unity中File→Build Settings→Player Setting→Player,将Other Settings下的Configuration中的Api Compatibility Level修改为.NET Framework:
再在Assets下新建一个Plugins文件夹,将下载的MySQL Connector/NET文件夹如下位置(v4.0)的MySql.Data.dll复制到Plugins文件夹下。
在Unity中创建一个空的游戏物体,将DatabaseManager脚本添加到该游戏对象中,将输入用户名和密码的输入框拖拽到对应的变量中,并将注册与登录按钮绑定DatabaseManager脚本中对应的注册和登录方法以响应用户的注册和登录操作。
UI界面输入:
系统输出信息:
数据库存储信息:
注意,如果之前Navicat已连接数据库,需要先关闭连接,再打开,在数据表中才能看见数据。