一个简单的七日签到系统
代码:
// An highlighted block
using System.Collections.Generic;
using System.Collections;
/// <summary>
/// 7日签到系统
/// </summary>
public class SignView : MonoBehaviour
{
public const string SignNumPrefs = "SignNum";
public const string SignDataPrefs = "SignData";
int signNum;//签到次数
DateTime today;//今日日期
DateTime signData;//上次签到日期
IEnumerator Start()
{
WWW www = new WWW("http://www.hko.gov.hk/cgi-bin/gts/time5a.pr?a=1");
while (!www.isDone)
{
//防止加载失败
yield return www;
}
if (www.text == "" || www.text.Trim() == "")//如果获取网络时间失败,改为获取系统时间
{
today = DateTime.Now;
}
else//成功获取网络时间
{
string timeStr = www.text.Substring(2);
System.DateTime time = System.DateTime.MinValue;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
time = startTime.AddMilliseconds(Convert.ToDouble(timeStr));
timeStr = time.ToString();
today = DateTime.Parse(timeStr);
}
signNum = PlayerPrefs.GetInt(SignNumPrefs, 0);
signData = DateTime.Parse(PlayerPrefs.GetString(SignDataPrefs, DateTime.MinValue.ToString()));
RefreshView();//刷新签到面板
}
//签到领取奖励
public void OnSignClick(int index)
{
if (IsOneDay()&&signNum==index)
{
signNum++;
signData = today;
Debug.Log("执行了");
PlayerPrefs.SetString(SignDataPrefs, today.ToString());
PlayerPrefs.SetInt(SignNumPrefs, signNum);
RefreshView();
UserGift(); //给用户奖励
if (signNum >= 7)//重新计算签到
{
PlayerPrefs.DeleteKey(SignNumPrefs);
}
}
else
{
//签到日期未到
}
}
//视图刷新方法
void RefreshView()
{
}
//判断是否可以签到
private bool IsOneDay()
{
if (signData.Year == today.Year && signData.Month == today.Month && signData.Day == today.Day)
{
return false;
}
if (DateTime.Compare(signData, today) < 0)
{
return true;
}
return false;
}
//签到奖励
void UserGift()
{
}
}
第一次写博客,不对之处请多多指教,欢迎讨论
参考链接: https://blog.csdn.net/yupu56/article/details/82873362.