
1.实装数据库系统 (1.制作简易opening场景 (2.放置输入框 (3.放置确认按钮 (4.当输入框开启时,若检测到按下某键,触发检查 (5.若检查结果为有该用户,拉取用户信息 (6.若没有,创建一个用户再拉取用户信息 (7.完成善后工作,转移到场景“cun” *.制作和替换美术素材,增加部分动画 *优化和修复 1.修复佛教前置关掉怪陷阱下落太慢的问题 建议: 1.给普通关卡和村也加上类似Boos的全局shader,目前从关卡间过度的时候能够看出明显的区别 2.建议给地藏敲钟攻击的灰尘加上渐隐,目前是瞬间消失的,十分违和 3.建议给普通的炸弹也加上拖尾,很酷 4.以撒发怒时变红太快了,消散得也太快了 5.以撒鬼魂的粒子也建议加上淡入和淡出 *. 下班
245 lines
7.4 KiB
C#
245 lines
7.4 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>
|
||
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;
|
||
|
||
}
|
||
|
||
}
|