
1.编写死亡记录系统 (1.当触发玩家死亡事件,传送一条记录前往服务器 (2.当触发玩家死亡事件,拉取云端死亡列表,挑选10条显示在场景 *.制作死亡玩家预制体 3.制作玩家UI 4.制作boss血条 *.替换和实装美术素材,增加部分动画 *优化和修复 1.调整了留言板的建立偏移,修复了留言板浮空的问题 2.修复了建板系统的操控性问题 3.解决了落在留言板上会导致动画异常的问题 建议: 1.给击中添加一些效果,目前还是打击感太弱 2.目前木马死后,灰尘不会消失 *.至此,死亡标记系统基本完成 下班
247 lines
7.5 KiB
C#
247 lines
7.5 KiB
C#
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;
|
||
|
||
}
|
||
|
||
}
|