religion/Assets/MySQL/PlayerInfo.cs
Roman 19a870409a 任务:流程化游戏
1.实装数据库系统
(1.制作简易opening场景
(2.放置输入框
(3.放置确认按钮
(4.当输入框开启时,若检测到按下某键,触发检查
(5.若检查结果为有该用户,拉取用户信息
(6.若没有,创建一个用户再拉取用户信息
(7.完成善后工作,转移到场景“cun”

*.制作和替换美术素材,增加部分动画

*优化和修复
1.修复佛教前置关掉怪陷阱下落太慢的问题

建议:
1.给普通关卡和村也加上类似Boos的全局shader,目前从关卡间过度的时候能够看出明显的区别
2.建议给地藏敲钟攻击的灰尘加上渐隐,目前是瞬间消失的,十分违和
3.建议给普通的炸弹也加上拖尾,很酷
4.以撒发怒时变红太快了,消散得也太快了
5.以撒鬼魂的粒子也建议加上淡入和淡出

*.

下班
2021-12-23 18:22:59 +08:00

245 lines
7.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using System.Threading;
using MySql.Data.MySqlClient;
using UnityEngine;
public class PlayerInfo : MonoBehaviour
{
public DataScriptableObject dataScriptableObject; //服务器信息,赋值后请勿再动
public string uName; //用户昵称
public int uid; //玩家uid
public int rate; //玩家进度
public List<BoardInfo> BoardInfos; //公告板信息链表
public List<DeadInfo> DeadInfos;//死亡信息链表
private string LinkInfo;
/// <summary>
/// 将类里储存的信息上传到数据库
/// </summary>
public void UpdatePlayerInfo()
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("UPDATE 用户表 SET 进度 = "+rate+", 最后登录 = CURRENT_TIME() WHERE uid = "+uid, con);
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
}
/// <summary>
/// 创建一条留言信息
/// </summary>
public void CreateBoard(int WorldId, Vector2 postion,string text)
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("INSERT INTO `religion`.`留言表` (`wid`, `uid`, `世界编号`, `坐标x`, `坐标y`, `正文`) VALUES (NULL, "+uid+", "+WorldId+", "+postion.x+", "+postion.y+", '"+text+"')", con);
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
}
/// <summary>
/// 创建一条死亡信息
/// </summary>
public void CreateDead(int WorldId, Vector2 postion)
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("INSERT INTO 死亡表 (`did`, `uid`, `世界编号`, `坐标x`, `坐标y`) VALUES (NULL, "+uid+", "+WorldId+", "+postion.x+", "+postion.y+")", con);
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
}
/// <summary>
/// 获取指定世界的死亡信息链表。
/// </summary>
public List<DeadInfo> GetDeadInfo(int WorldId)
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("SELECT * FROM 死亡表 NATURAL JOIN 用户表 WHERE 世界编号 = "+WorldId, con);
MySqlDataReader reader = cmd.ExecuteReader();
DeadInfos.Clear();
while (reader.Read())
{
DeadInfo deadInfos = new DeadInfo();
deadInfos.uid = reader.GetInt32("uid");
deadInfos.id = reader.GetInt32("did");
deadInfos.postion = new Vector2(reader.GetFloat("坐标x"),reader.GetFloat("坐标y"));
DeadInfos.Add(deadInfos);
}
return DeadInfos;
}
/// <summary>
/// 获取指定世界的留言板链表。
/// </summary>
private List<BoardInfo> GetBoardInfo(int WorldId)
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("SELECT * FROM 留言表 NATURAL JOIN 用户表 WHERE 世界编号 = "+WorldId, con);
MySqlDataReader reader = cmd.ExecuteReader();
BoardInfos.Clear();
while (reader.Read())
{
BoardInfo boardInfos = new BoardInfo();
boardInfos.text = reader.GetString("正文");
boardInfos.uid = reader.GetInt32("uid");
boardInfos.id = reader.GetInt32("wid");
boardInfos.postion = new Vector2(reader.GetFloat("坐标x"),reader.GetFloat("坐标y"));
BoardInfos.Add(boardInfos);
}
return BoardInfos;
}
/// <summary>
/// 判断是否存在这个用户
/// </summary>
public bool hasName(string _searchName)
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("SELECT * FROM 用户表 WHERE 昵称='"+_searchName+"'", con);
MySqlDataReader reader = cmd.ExecuteReader();
return reader.HasRows;
}
/// <summary>
/// 在用户表内创建一个用户
/// </summary>
public void CreateUser(string username)
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("INSERT INTO 用户表 (`uid`, `昵称`, `血量`, `进度`, `注册时间`, `最后登录`) VALUES (NULL, '"+username+"', 0, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)", con);
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
}
/// <summary>
/// 使用多线程获取用户信息使用前请先设置公关变量name
/// </summary>
public void GetSqlData()
{
Thread thread = new Thread(ThreadGetSqlData);
thread.Start();
}
private void ThreadGetSqlData()
{
MySqlConnection con = new MySqlConnection(LinkInfo);
try
{
con.Open();
Debug.Log("连接成功");
}
catch (MySqlException e)
{
e.ToString();//解决Warming
Debug.Log("连接失败");
}
MySqlCommand cmd = new MySqlCommand("SELECT * FROM 用户表 WHERE 昵称='"+uName+"'", con);
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
uid = reader.GetInt32("uid");
rate = reader.GetInt32("进度");
}
private void ThreadUpdatePlayerInfo()
{
}
void Start()
{
//
if(FindObjectsOfType<PlayerInfo>().Length > 1)
Destroy(gameObject);
DontDestroyOnLoad(gameObject);
//
LinkInfo = "server="+dataScriptableObject.IP+";" +
"port="+dataScriptableObject.Port+";" +
"database="+dataScriptableObject.Database+";" +
"user="+dataScriptableObject.User+";" +
"password="+dataScriptableObject.Password+";" +
"charset="+dataScriptableObject.Charset;
}
}