unity3d實現(xiàn)七天簽到功能
本文實例為大家分享了unity3d實現(xiàn)七天簽到功能的具體代碼,供大家參考,具體內(nèi)容如下
在很多游戲中都有簽到功能,(這里記錄的是7天連續(xù)簽到功能的實現(xiàn))
一、功能分析
1.當天是否簽到的判斷
2.簽到天數(shù)是否連續(xù)和是否完成了7天的簽到(不連續(xù)或者已經(jīng)完成了7天連續(xù)簽到,需要清楚數(shù)據(jù),重新計算簽到)
最主要的也就是這兩個功能需要實現(xiàn),其他的數(shù)據(jù)存儲包括:連續(xù)簽到次數(shù),上一次簽到日期。
下面的代碼是默認簽到送金幣。不過使用的時候還是需要自己去刪減或者增加自己的代碼:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.UI;
using DG.Tweening;
public class Jungle_DailyCheck : MonoBehaviour
{
/// <summary>
/// 獲取簽到次數(shù)
/// </summary>
/// <returns>The sign number.</returns>
public int GetSignNum()
{
if (PlayerPrefs.HasKey("signNum"))
return PlayerPrefs.GetInt("signNum");
return 0;
}
/// <summary>
/// 設置簽到次數(shù)
/// </summary>
/// <param name="num">Number.</param>
public void SetSignNum(int num)
{
PlayerPrefs.SetInt("signNum", num);
}
/// <summary>
/// 獲取上次簽到日期
/// </summary>
/// <returns>The sign data.</returns>
public string GetSignData()
{
if (PlayerPrefs.HasKey("signData"))
return PlayerPrefs.GetString("signData");
return DateTime.MinValue.ToString();
}
/// <summary>
/// 設置上次簽到日期
/// </summary>
public void SetSignData(DateTime data)
{
PlayerPrefs.SetString("signData", data.ToString());
}
int signNum;//簽到次數(shù)
DateTime today;//今日日期
DateTime signData;//上次簽到日期
private bool isRewardTake = false;
public Text text_Getcoin;
private void Start()
{
today = DateTime.Now;
signNum = GetSignNum();
signData = DateTime.Parse(GetSignData());
if (IsOneDay(signData, today))
{
return;
}
// Debug.Log(string.Format("lastSign==={0},today===={1}", signData, today));
//新的簽到周期,需要清除簽到存檔(清楚簽到次數(shù)和上一次簽到日期)
if (NeedClean())
{
PlayerPrefs.DeleteKey("signNum");
PlayerPrefs.DeleteKey("signData");
}
signNum = GetSignNum();
OnBtnGetRewordClick();
}
//簽到按鈕點擊
public void OnBtnGetRewordClick()
{
signNum++;
signData = today;
//更新存檔
SetSignData(signData);
SetSignNum(signNum);
//給用戶加金幣
DataManager.instance.SetCoin(DataManager.instance.GetCoin() + signNum * 3);
text_Getcoin.transform.GetChild(0).GetComponent<Text>().text = "Get" + " " + signNum * 3 + " coins";
text_Getcoin.gameObject.SetActive(true);
text_Getcoin.transform.GetChild(0).transform.DOScale(1.2f, 2.5f).onComplete = delegate
{
text_Getcoin.transform.GetChild(0).transform.localScale = new Vector3(1, 1, 1);
text_Getcoin.gameObject.SetActive(false);
};
}
//判斷是否是同一天
bool IsOneDay(DateTime t1, DateTime t2)
{
return (t1.Year == t2.Year &&
t1.Month == t2.Month &&
t1.Day == t2.Day);
}
//需要清除數(shù)據(jù)(當簽到天數(shù)大于等于7天或者簽到間隔大約一天,則重置數(shù)據(jù))
bool NeedClean()
{
TimeSpan tsNow = new TimeSpan(today.Ticks);
TimeSpan tsSign = new TimeSpan(signData.Ticks);
TimeSpan tsDur = tsNow.Subtract(tsSign).Duration();
// Debug.Log(string.Format("days====={0},hours======{1},minutes====={2}", tsDur.Days, tsDur.Hours, tsDur.Minutes));
signNum = GetSignNum();
if (signNum >= 7 || tsDur.Days > 1)
{
return true;
}
else
{
return false;
}
}
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
IIS下調(diào)用證書出現(xiàn)異常的解決方法 (C#)
這篇文章主要為大家詳細介紹了IIS下調(diào)用證書出現(xiàn)異常的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

