religion/Assets/MySQL/PlayerInfo.cs
Roman ca1cc0162d 任务:编写留言系统、替换和实装美术素材
1.编写留言系统
(1.当玩家无Catch的时候,记录长按Y的时间,若时间大于两秒,呼唤UI,触发相应事件

*.编写撰写留言板逻辑
(*.清空操作地图
(1.呼出留言板UI
(2.当按下确认键,确认建立一个本地留言板,并初始化该本地留言板,恢复操作地图
(3.将留言板数据传向云端

*.编写留言板逻辑
(1.内含BoardInfo内的信息
(2.继承于可交互物体
(3.当交互,呼出留言板UI,显示内容、UID等信息
(4.当按下返回键,关闭UI

*.编写拉取留言板系统
(1.加在开幕演出中,开幕时呼叫sql上的脚本,拉取若干条留言板
(2.在场景内创建留言板,并初始化信息

*.替换和实装美术素材,增加部分动画
1.增加村内上树动画
2.更新村场景,使得玩家可以走到村下
3.制作以撒闪电攻击动画
4.制作以撒冲撞攻击动画
5.制作以撒雕像碎裂动画
6.贴上对话框
7.制作以撒闪电攻击动画
8.制作村民和贵族的待机角色
9.制作特洛伊木马死亡动画
10.制作特洛伊木马的喷射动画

*优化和修复
1.修复佛教前置关掉怪陷阱有时不会触发的问题
2.重做渲染层,避免出现覆盖问题
3.修复玩家会卡在村里桥上的问题
4.解决了屎山代码的warming问题
5.删除了子弹时间,效果太差

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

*.至此,留言系统全部完成

下班
2021-12-25 00:37:29 +08:00

246 lines
7.5 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>
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>();
//
LinkInfo = "server="+dataScriptableObject.IP+";" +
"port="+dataScriptableObject.Port+";" +
"database="+dataScriptableObject.Database+";" +
"user="+dataScriptableObject.User+";" +
"password="+dataScriptableObject.Password+";" +
"charset="+dataScriptableObject.Charset;
}
}