『功能项目』Unity本地数据库读取进入游戏【29】

2024-09-06 15:52

本文主要是介绍『功能项目』Unity本地数据库读取进入游戏【29】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本章项目成果展示

打开上一篇28Unity连接读取本地数据库的项目,

本章要做的事情是通过读取本地数据库登录进入游戏场景

首先创建一个脚本文件夹:

新建脚本:MySqlAccess.cs

编写脚本:MySqlAccess.cs

using UnityEngine;
using MySql.Data.MySqlClient;
public class MySqlAccess : MonoBehaviour{//数据库地址、端口、用户名、数据库名、密码string connStr = "server = 127.0.0.1;port = 3306;user= root;database = database;password =123456;charset=utf8";//unity与数据库的连接方法 - 需要连接数据库时调用MySqlConnection ConectToDataBase(){//实例化数据库连接对象 并传入连接信息MySqlConnection conn = new MySqlConnection(connStr);conn.Open();return conn;}//定义一个公共的查询方法public string QueryData(string tableName, string condition){#region -相当于把语句粘贴到navicat中//数据库查询语句在unity的使用string query = $"select * from {tableName} where {condition}";//使用连接方法ConectToDataBase()连接数据库MySqlConnection conn = ConectToDataBase();//构造查询条件 依据query中的SQL语句查询MySqlCommand cmd = new MySqlCommand(query, conn);#endregion#region 相当于点开始查询的按钮//执行查询语句的条件MySqlDataReader reader = cmd.ExecuteReader();//获取数据库读取到的数据string myString = "未获得数据库数据";//循环读取数据库中的数据while (reader.Read()){int id = reader.GetInt32("id");string name = reader.GetString("name");string password = reader.GetString("password");myString = string.Format("{0}{1}{2}", id, name, password);Debug.Log("数据库中循环读取的数据{0}{1}{2}");}#endregion//关闭数据库conn.Close();return myString;}public void InsertData(string tableName, string columns, string valuers){//插入的SQL语句string query = $"Insert into {tableName} ({columns}) values ({valuers})";//使用连接方法ConectToDataBase()连接数据库MySqlConnection conn = ConectToDataBase();//构造插入条件 依据query中的SQL语句插入MySqlCommand cmd = new MySqlCommand(query, conn);//执行SQL语句插入cmd.ExecuteNonQuery();//关闭数据库conn.Close();}//更新语句public void UpdateData(string tableName, string setStatement, string condition){//更新的Sql语句string query = $"Update {tableName} set {setStatement} where {condition}";//使用连接方法ConectToDataBase()连接数据库MySqlConnection conn = ConectToDataBase();//构造更新条件 依据query中的SQL语句更新MySqlCommand cmd = new MySqlCommand(query, conn);//执行SQL语句更新cmd.ExecuteNonQuery();//关闭数据库conn.Close();}//删除数据的方法public void DeleteData(string tableName, string condition){//删除的Sql语句string query = $"Delete from {tableName} where {condition}";//使用连接方法ConectToDataBase()连接数据库MySqlConnection conn = ConectToDataBase();//构造删除条件 依据query中的Sql语句删除MySqlCommand cmd = new MySqlCommand(query, conn);//执行SQL语句删除cmd.ExecuteNonQuery();//关闭数据库conn.Close();}//登陆方法 游戏内消耗物品的二级密码public bool CheckLogin(string tableName, string username, int password){//建立查询条件string condition = $"name = '{username}' and password = {password}";//使用条件字符串查询string query = $"select * from {tableName} where {condition}";//使用连接方法ConectToDataBase()连接数据库MySqlConnection conn = ConectToDataBase();//构造擦汗寻条件 依据query中的SQL语句查询MySqlCommand cmd = new MySqlCommand(query, conn);//执行查询语句的条件MySqlDataReader reader = cmd.ExecuteReader();//判断账户密码是否存在bool loginSuccess = reader.HasRows;//关闭数据库conn.Close();//返回账户结果return loginSuccess;}//登陆方法 检测登陆界面用户名和密码public bool CheckLogin(string username, int password){//建立查询条件string condition = $"name = '{username}' and password = {password}";//使用条件字符串查询string query = $"select * from userinfo where {condition}";//使用连接方法ConectToDataBase()连接数据库MySqlConnection conn = ConectToDataBase();//构造擦汗寻条件 依据query中的SQL语句查询MySqlCommand cmd = new MySqlCommand(query, conn);//执行查询语句的条件MySqlDataReader reader = cmd.ExecuteReader();//判断账户密码是否存在bool loginSuccess = reader.HasRows;//关闭数据库conn.Close();//返回账户结果return loginSuccess;}//注册方法public void RegisterUser(string username, int password){//准备插入条件string columns = "name,password";string values = $"'{username}',{password}";//插入到表格中InsertData("userinfo", columns, values);}
}

新建一个脚本用来读取数据库检测账号密码成功后转入游戏场景:

编写脚本:LoginUI.cs

using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LoginUI : MonoBehaviour{//获取MySqlAccess类 在UIToGame类中使用MySql类中的成员和方法MySqlAccess mySqlAccess;//获取登陆失败提示文本public GameObject errorUI;//获取账户输入框——新版UIpublic TMP_InputField inputUsername;//获取密码输入框——旧版UIpublic InputField inputPassword;Button newBtn;Button oldBtn;void Start(){mySqlAccess = GameObject.Find("GameObject").GetComponent<MySqlAccess>();newBtn = GameObject.Find("Canvas/Button").GetComponent<Button>();newBtn.onClick.AddListener(OnLoginButtonClick);oldBtn = GameObject.Find("Canvas/Button (Legacy)").GetComponent<Button>();oldBtn.onClick.AddListener(OnRegisterButtonClick);}//登陆检测 点击按钮时运行public void OnLoginButtonClick() {//获取输入账号中的内容string username = inputUsername.text;//获取输入密码框的密码 并强制转换为intint password = int.Parse(inputPassword.text);//调用MySqlAccess类中登陆检测方法 判断账号是否合法//合法允许登录 否则显示错误if (mySqlAccess.CheckLogin(username, password)){//登陆成功 切换场景SceneManager.LoadScene(1);}else {//登陆失败提示errorUI.SetActive(true);}}//注册功能 点击按键时执行public void OnRegisterButtonClick() {//获取注册框上的注册信息string username = inputUsername.text;//获取密码框上的密码int password = int.Parse(inputPassword.text);//调用我们的注册方法mySqlAccess.RegisterUser(username, password);}
}

将两个脚本挂载至空物体上,并拖拽

打开Navicat右键设计表增加一个字符串类型的password变量后保存

场景设置

设置好点击关闭即可

运行项目:首次输入自定义以及自定义密码点击开始游戏

关闭显示 - 点击注册

再次点击开始游戏 - 转到游戏场景

本篇做了数据库读取账号密码信息及注册登录游戏功能,接下来还需做以下内容:

1.状态模式转换场景

2.可拖动UI窗口

3.怪物集目标点巡航功能

4.隐藏怪物的生成

5.怪物I攻击范围内的主动攻击

6.掉落坐骑蛋的获取

7.异步传送转换场景

以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。

具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》

【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0&vd_source=547091a95b03acfa8e8a9e46ef499cd6

这篇关于『功能项目』Unity本地数据库读取进入游戏【29】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142446

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分