religion/Assets/MySQL/PlayerInfo.cs
Roman 9f3ffbb94c 任务:编写留言系统、死亡记录系统、替换和实装美术素材
1.编写死亡记录系统
(1.当触发玩家死亡事件,传送一条记录前往服务器
(2.当触发玩家死亡事件,拉取云端死亡列表,挑选10条显示在场景
*.制作死亡玩家预制体

3.制作玩家UI

4.制作boss血条

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

*优化和修复
1.调整了留言板的建立偏移,修复了留言板浮空的问题
2.修复了建板系统的操控性问题
3.解决了落在留言板上会导致动画异常的问题

建议:
1.给击中添加一些效果,目前还是打击感太弱
2.目前木马死后,灰尘不会消失

*.至此,死亡标记系统基本完成

下班
2021-12-25 18:27:29 +08:00

247 lines
7.5 KiB
C#
Raw Permalink 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>
public 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);
BoardInfos = new List<BoardInfo>();
DeadInfos = new List<DeadInfo>();
//
LinkInfo = "server="+dataScriptableObject.IP+";" +
"port="+dataScriptableObject.Port+";" +
"database="+dataScriptableObject.Database+";" +
"user="+dataScriptableObject.User+";" +
"password="+dataScriptableObject.Password+";" +
"charset="+dataScriptableObject.Charset;
}
}