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 BoardInfos; //公告板信息链表 public List DeadInfos;//死亡信息链表 private string LinkInfo; /// /// 将类里储存的信息上传到数据库 /// 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(); } /// /// 创建一条留言信息 /// 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(); } /// /// 创建一条死亡信息 /// 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(); } /// /// 获取指定世界的死亡信息链表。 /// public List 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; } /// /// 获取指定世界的留言板链表。 /// public List 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; } /// /// 判断是否存在这个用户 /// 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; } /// /// 在用户表内创建一个用户 /// 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(); } /// /// 使用多线程获取用户信息,使用前请先设置公关变量name /// 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().Length > 1) Destroy(gameObject); DontDestroyOnLoad(gameObject); BoardInfos = new List(); DeadInfos = new List(); // LinkInfo = "server="+dataScriptableObject.IP+";" + "port="+dataScriptableObject.Port+";" + "database="+dataScriptableObject.Database+";" + "user="+dataScriptableObject.User+";" + "password="+dataScriptableObject.Password+";" + "charset="+dataScriptableObject.Charset; } }